こんにちは(ここで私の最初の質問;-)
同様の質問があるかもしれませんが、私の質問に答えたり、本当の解決策を提供したりするものはありません...
問題
A(ルート) が開始されBます。B他の活動を開始できます。Aは、スタックを破棄して (ネットワーク接続が失われます)、開始することを決定しますC。これは思い切った決定のように見えますが、ユーザーはそれを期待しており、この場合は本当に理にかなっています...
質問
どうすればいいですか?特定のフラグを使用するか、単に次のようなものを呼び出すことを期待しdismissStackます。しかし、適切な解決策が見つかりません(以下の調査を参照)。
調査
たくさんのドキュメントを読みましたが、利用可能なフラグが私のニーズに合っていません (または、正しく理解していませんでした)。そこにある他の回答は、開始されたアクティビティを(たとえば、配列で)覚えて、必要に応じて終了するように教えてくれます。しかし、これは私には汚いように思えます。どういうわけか、それが正しい解決策であるとは受け入れられません。私が望むもっときれいなものがあるに違いない?!
(スタックを保存することは私には間違っているようにさえ思えます。アプリはシステムによって強制終了される可能性があるため、静的データは起動時に再度読み込まれます。したがって、保存されたスタックを保持する必要があります。これはさらに汚れます.. .)
私のコードと私が試したことを更新してください(要約):
// in A
startActivityForResult(new Intent(this, B.class), REQUEST_B);
// network fail in A
// setting any flags on C has no influence
startActivityForResult(new Intent(this, C.class), REQUEST_C);
( FLAG_ACTIVITY_CLEAR_TOPは解決策ではありません。ドキュメントをお読みください...)
私は押し続け、まだポップアップし、とてもまだそこにいますBack...CB
を呼び出してアクティビティを削除できfinishActivity(REQUEST_B)ます。しかし、B別のアクティビティを開始すると、後でヒットしDた場合でもポップアップします。なくなったけどまだある…BackCBD
まだ理解していない、または見逃しているものがあると確信しています。本当にそうしなければならない場合、誰かが私にヒントを与えたり、私の研究を承認したりできますか...