1

ユーザーに通知を表示するアプリケーションがあります。通知を押すと、「ディスパッチ」アクティビティがトリガーstartActivitiesされ、通知ペイロードに応じて適切なアクティビティにつながるいくつかのインテントで呼び出されます。https://developer.android.com/training/notify-user/navigation#ExtendedNotificationに従ってマニフェストで宣言する方法は次のとおりです。

            android:name=".DispatchActivity"
            android:taskAffinity=""
            android:excludeFromRecents="true"
            android:launchMode="singleTask" />

通知を押すと、で起動DispatchActivityされ、すぐにfinish()を呼び出す前にIntent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK新しいアクティビティが起動されます。Intent.FLAG_ACTIVITY_NEW_TASKアプリケーションが既に起動されている場合、新しいアクティビティ ( と呼びましょうsecond Activity) は、以前に起動されたアクティビティの上に起動されるため、[Recents] ボタンを押すと、アプリが 1 回だけ表示されます。

ここに画像の説明を入力

ここに画像の説明を入力

これは実際に私が望む動作です。問題は、Android 10 で同じコードを実行して [Recents] ボタンを押すと、アプリの 2 つのインスタンス (2 つのタスクだと思います) が表示されることです。

ここに画像の説明を入力

[最近] ボタンをもう一度押して 2 番目のアクティビティを復元すると、それが消えて最初のアクティビティしかありません。SecondActivity がexcludeFromRecents、他の Android バージョンでは当てはまらない動作から継承されたかのように (Android 11 プレビューでテストしたところ、期待どおりに動作しています)。

taskAffinity=""マニフェストで forを削除しようとしたので、アプリケーション内の他のアクティビティと同じ親和性がありますが、タグDispatchActivityのために Android 10 の最初のように DispatchActivity から起動されたアクティビティが消えてしまうアプリが起動されていないという通知を受け取ると問題が発生します。excludeFromRecents

私は今アイデアが不足しているので、解決策がある場合、またはすでに問題に遭遇している場合は、提案を受け付けています.

ありがとう !

必要に応じてサンプル コードを以下に示します: https://github.com/LoicJ/MultiTaskBugSample.git

4

1 に答える 1