我有一个活动 Main.java 在我的应用程序中打开,我想使用广播接收器关闭活动,如何关闭活动?
问问题
10069 次
3 回答
6
首先,您的 Main.java 需要注册为接收器。你可以在 Main.java 的 onResume() 中注册它:
@Override
public void onResume() {
registerReceiver(broadcastReceiver, new IntentFilter(BroadcasterClassName.NAME_OF_ACTION));
}
然后处理广播并完成您的活动:
private BroadcastReceiver broadcastReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
if (intent.getAction().equals(BroadcasterClassName.NAME_OF_ACTION)) {
finish();
}
}
}
于 2012-12-20T11:49:00.880 回答
0
您可以向实现 Handler.Callback 的活动发送消息,并在那里处理它以关闭活动。
快速示例:
class Act1 extends Activity implements Handler.Callback {
public static final int CLOSE_ACTIVITY = 54212;
public boolean handleMessage(Message msg) {
if(msg.what == CLOSE_ACTIVITY) {
finish();
}
}
}
然后,由于您 BroadcastReceiver 在大多数情况下在主线程上运行。只需通过 Handler 发送消息。
new Handler().sendMessage(MessageFactory.createShutdownMsg()).
于 2012-12-20T11:49:05.927 回答
-1
你可以这样做:在你的主要有:
private static Main mInstance;
onCreate()
{
...
mInstance = this;
}
public static boolean closeActivity()
{
if (mInstance != null)
{
mInstance.finish();
return true;
}
return false;
}
但是,这意味着任何时候都只存在一个 Main。我认为你可以通过在清单中添加 android:noHistory="true" 或类似的东西来实现这一点。
于 2012-12-20T11:41:31.973 回答