3

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

4

3 回答 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 回答