使用BroadcastReceiver关闭活动

时间:2012-12-20 11:36:32

标签: android broadcastreceiver

我有一个活动Main.java在我的应用程序中打开,我想使用广播接收器关闭活动,如何关闭活动?

3 个答案:

答案 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”或类似的东西来实现这一点。