My Appのアクティビティ構造は、次のいずれかになります。Androidで上位2つのアクティビティ以外のすべてのアクティビティをクリアするにはどうすればよいですか?
ケース1:A> B> B> B> D
ケース2:A> B> D
ケース3:A> B> B> B> C> D
A> B
:選択したとき、私は、スタック上でこので終わるしたいことアクティビティDでのオプションがあります
理想的には、Bはそのアクティビティの新しいインスタンスです。最初は私が解決策を見つけたのはACTIVITY_FLAG_CLEAR_TOP
で、ケース2で動作します。しかし、いずれのケースもケース3では、すべての 'アンダーブルー'のBアクティビティをそのままそのまま残してしまいます。 A> B> B> B.
Iは直ちにのインスタンスを起動するonNewIntentまたはのonCreateメソッドで余分をACTIVITY_FLAG_CLEAR_TOP
とACTIVITY_FLAG_SINGLE_TOP
を使用して、活動Aを開始するためにそれを使用して捕獲の潜在的問題を回避するソリューションを発見したインターネット精練アクティビティB.
しかし、それは私にはやや厄介なようです。特にアクティビティAを考えているのは、(直感的なものから直感的な流れまで)ホーム画面です。アカウント間を切り替えるときにのみアクセスします(技術的に言えば、キャラクター、それはゲームなので)。
私が考えていたもう一つの回避策は、AとBの間に読み込み画面アクティビティを挿入して、Bに戻ってBを再呼び出しできるようにすることです。しかし、それは単純なアプリであり、実際に読み込み時間を必要とするものがないため、やや鈍いように見えます。また、アクティビティBからのすべてのアクティビティを新しいタスクに入れられる可能性がありますが、それはさらに不明瞭で不必要なようです。
TLDR:A以外のすべてのスタックをクリアする方法はありますか?新しいアクティビティB?あるいは、私は回避策を使用する運命にある答えです。
編集:ユーザがアクティビティDで特定のオプションを選択するまで、back stack
が必要です。たとえば、アクティビティDまたはB(またはC)アクティビティのいずれかでバックキーを押しただけの場合、直前の活動に戻る必要があります(既定ではそうですが)ので、私が行っているような活動は終了しません。
アクティビティDで特定のオプションが選択されるまで、バックスタックは必要ないと指定する必要があります。これを含めるように質問を編集します。 – Shieldwall