ユーザーに通知を表示するアプリケーションがあります。通知を押すと、「ディスパッチ」アクティビティがトリガー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