1

2 つのアクティビティがあるとします:
1.アクティビティ A (ランチャー アクティビティ)
2.アクティビティ B


アクティビティ Aからアクティビティ Bを起動すると、アクティビティ Aが終了します。

startActivity(new Intent(A.this, B.class));
finish();

アクティビティ Bから終了ボタンをクリックすると、アクティビティ Bが終了します。

ExitButton.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                finish();
            }
        });

したがって、アクティビティ Bがアクティビティ Aから起動され、アクティビティ Bから終了 (またはアプリケーションから終了) するとします。アプリケーションが起動される場所から 2 つのオプションがあります:
1. ランチャー アイコン
から 2. 最近のアプリから

ここで、アプリケーションがランチャー アイコンから起動された場合、アクティビティ Aが起動されます。しかし、アプリケーションがRecent Appsから起動された場合、Activity Bが起動されます。


アクティビティ Bは、 finish()を呼び出してもスタックに残ると思います。
私の質問は次のとおりです。アプリケーションが終了したときにスタックをクリアするにはどうすればよいですか? Android 2.3.6 バージョンでテスト済み

4

2 に答える 2

2

AndroidManifest.xml ファイルで MainActivity の android:clearTaskOnLaunch="true" 属性を設定できます。ご要望にお応えするには、これが一番便利だと思います。

テストしたところ、これはアプリを終了してアプリドロワーからアプリを起動した場合にのみ機能することがわかりました(ホームを長押ししてアプリを選択しないでください)。

アプリをいつ再起動しても、最近の画面からでも、常にルート アクティビティを前面に表示したい場合。ルート アクティビティ、ここでは MainActivity に対して "android:launchMode="singleTask" を宣言できます。

于 2014-12-03T09:51:25.537 に答える