我有一个活动Main.java在我的应用程序中打开,我想使用广播接收器关闭活动,如何关闭活动?
答案 0 :(得分: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();
}
}
}
答案 1 :(得分: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在主线程上运行,在大多数情况下。只需通过处理程序发送消息。
new Handler().sendMessage(MessageFactory.createShutdownMsg()).
答案 2 :(得分:-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”或类似的东西来实现这一点。