アクティビティ 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;
}
ただし、これは一度に 1 つの Main しか存在しないことを意味します。マニフェストに android:noHistory="true" などを追加することで、それを実現できると思います。
于 2012-12-20T11:41:31.973 に答える