アップ ナビゲーションでインテント フラグを使用するのは初めてで、どのインテント フラグを使用すればよいか混乱しています。私のアプリケーションツリーは次のとおりです。
A
/ \
B S
| |
C W
| |
D D
主な活動は A、S は検索可能な活動です。アクティビティ S と W の状態が保存されます。D から上に移動すると、C、B、A の順に進みます。S、W、D についても同様です。
私の最善のアプローチはintent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP|Intent.FLAG_ACTIVITY_SINGLE_TOP);
、すべての意図で: を使用することです。2.3.3 ではすべて正常に動作しますが、4.2 で試してみると、上に移動するとアクティビティが破棄されます。たとえば、ASW から S までナビゲートすると、S が再開されます。このシナリオで問題が発生します。ASWD は次に W までナビゲートします。この場合、W と S は破棄され、A が再開されます。この別のケースでも同じことが起こります。ABC を上に移動すると B が表示され、ABCD を上に移動すると A が表示されます。
私が理解している限り、 FLAG_ACTIVITY_CLEAR_TOP と FLAG_ACTIVITY_SINGLE_TOP を使用すると、呼び出しアクティビティが終了し、呼び出されたアクティビティがスタックにある場合、新しいインスタンスは作成されません。しかし、これは起こっていません。
では、なぜ活動は破壊されたのでしょうか。この単純なケースで使用する正しいフラグはどれですか?