0

のa、b、私は、スタック内のアクティビティA-> Bを持つべき、との活動Cを起動するために、私はこのすべてが正常に動作します活動を閉じた後Androidはもはやスタック

 Intent starter = new Intent(context, MainActivity.class); 
    starter.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP); 
    context.startActivity(starter); 

を呼び出していない活動に戻り、アクティビティAとBの両方でOnDestroyが呼び出されます。今すぐハードウェアの「戻る」ボタンを押すと、アクティビティは適切に終了し、非表示になります。しかし、問題は今、私がハードウェアの最近のアプリボタンをクリックしてアプリケーションを通してアプリケーションに戻ると、アクティビティAに戻ります。アクティビティは破壊されたものであり、スタックにはありません。マニフェストでは、アンドロイド:launchModeが設定されていないため、デフォルトで動作しています。

関連する情報の唯一の可能な部分は、ランチャーアクティビティであるアンドロイド:launchMode = "singleInstance"であるアクティビティXがあり、アクティビティAを起動し、それが破壊され、とにかくそのアクティビティスタックに収まるようにしてください。

+0

の上に書かれたあなたのコードで上書きできます。スタック内にコースよりも何もない場合、Launcherアクティビティが呼び出されます(これはアクティビティAを呼び出すことよりも優先されます)。あなたは何が起こると思いますか? – AabidMulani

+0

少し混乱して申し訳ありませんが、最後の段落で説明しています。アクティビティXは実際に起動アクティビティであり、singleInstance(他のアクティビティはそのタスクで起動できません)であり、アクティビティAを起動して終了します。したがって、アクティビティXが再び起動された場合でも、アクティビティAが起動されます。 –

答えて

0

アクティビティCにactvity C.

のonDestroy()が呼び出されてもよいがボタンを押しながらバックが呼び出されているか否かを確認するためにログを挿入してください。これはあなたのアクティビティAが再び立ち上げられる唯一の理由です。

これらはあなたのために動作しない場合は私に知らせてくださいAndroid Back button calls ondestroy?

を参照してください。

+0

onDestoryが呼び出されていますが、これはアクティビティスタックの最下部のバックプレスで発生する必要があります。スタック内で唯一のアクティビティであれば、それは破壊され、アプリケーションに戻ると、そのアクティビティに対してonCreateを再度呼び出すでしょう。問題は、前に説明したパターンに従って、アクティビティAとBが破棄されます。 –

+0

いいえ、アクティビティAと呼びます。 –

+0

なぜAですか?タスクはクリアされ、アクティビティCのフラグを使用して新しいタスクが作成されます。 –

0

ハードウェアのバックボタンがfollwingコードで上書きすることができます。

@Override 
public void onBackPressed() { 
    //put Intent to go back here 
} 

あなたはただ、私はそれが正しい行動だと思いあなたの説明を読んだ後

+0

これは本当ですが、このアクティビティが本当にモジュラで独立していることを防ぎます。スタックの下に別のアクティビティがある場合は、ポップアップが表示されます。私はちょうど破壊されたアクティビティに戻ってきて、以前スタックにいたばかりで、なぜランチャー活動ではないのか混乱しています。 –

関連する問題