問題タブ [taskaffinity]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
android - 同じルート アクティビティで複数の Android タスクを開く
新しい(別の)タスク(つまり、最近の画面で別のバックスタックと別のインスタンス)で Main2Activity を使用してインテントを開始しようとしています。それを行うべき方法は、Intent.FLAG_ACTIVITY_NEW_TASK
およびIntent.FLAG_ACTIVITY_MULTIPLE_TASK
インテント フラグを追加することであることに気付きました。
しかし、これは (マニフェストで) Main2Activity android:taskAffinity
をデフォルト以外 (つまり、現在のアクティビティのタスク アフィニティ以外) に設定した場合にのみ機能します。
問題は、同じアクティビティで別の新しいタスクを複数回作成できるようにしたいことです。
例:
Android Gmail アプリでは、「作成」ボタンを数回クリックすることができ、そのたびにコンポーザの「新しいインスタンス」が作成されます。まったく同じ動作を実現したいと思います。
どんな手掛かり?
どうもありがとう。
android - Android 10 での taskAffinity と excludeFromRecents の問題
ユーザーに通知を表示するアプリケーションがあります。通知を押すと、「ディスパッチ」アクティビティがトリガーstartActivities
され、通知ペイロードに応じて適切なアクティビティにつながるいくつかのインテントで呼び出されます。https://developer.android.com/training/notify-user/navigation#ExtendedNotificationに従ってマニフェストで宣言する方法は次のとおりです。
通知を押すと、で起動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