2016-09-02 10 views
0

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_TOPACTIVITY_FLAG_SINGLE_TOPを使用して、活動Aを開始するためにそれを使用して捕獲の潜在的問題を回避するソリューションを発見したインターネット精練アクティビティB.

しかし、それは私にはやや厄介なようです。特にアクティビティAを考えているのは、(直感的なものから直感的な流れまで)ホーム画面です。アカウント間を切り替えるときにのみアクセスします(技術的に言えば、キャラクター、それはゲームなので)。

私が考えていたもう一つの回避策は、AとBの間に読み込み画面アクティビティを挿入して、Bに戻ってBを再呼び出しできるようにすることです。しかし、それは単純なアプリであり、実際に読み込み時間を必要とするものがないため、やや鈍いように見えます。また、アクティビティBからのすべてのアクティビティを新しいタスクに入れられる可能性がありますが、それはさらに不明瞭で不必要なようです。

TLDR:A以外のすべてのスタックをクリアする方法はありますか?新しいアクティビティB?あるいは、私は回避策を使用する運命にある答えです。

編集:ユーザがアクティビティDで特定のオプションを選択するまで、back stackが必要です。たとえば、アクティビティDまたはB(またはC)アクティビティのいずれかでバックキーを押しただけの場合、直前の活動に戻る必要があります(既定ではそうですが)ので、私が行っているような活動は終了しません。

答えて

0

back stackActivityを追加する必要がない場合は、いつでもNew Activities with Intentを呼び出してfinish()メソッドを呼び出してください。例えば

、 あなたの呼び出しシーケンスが

Aである場合 - > B - > C - > D - > Eから戻って来ながらE

、それはBに戻って取得する必要があります。Activity CからActivity Dを起動しながら、

それに伴いfinish()を呼び出し、それに伴いActivity Dコールfinish()からActivity Eの起動中。

+0

アクティビティDで特定のオプションが選択されるまで、バックスタックは必要ないと指定する必要があります。これを含めるように質問を編集します。 – Shieldwall

関連する問題