問題タブ [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.

0 投票する
1 に答える
438 参照

android - 同じルート アクティビティで複数の Android タスクを開く

新しい(別の)タスク(つまり、最近の画面で別のバックスタックと別のインスタンス)で Main2Activity を使用してインテントを開始しようとしています。それを行うべき方法は、Intent.FLAG_ACTIVITY_NEW_TASKおよびIntent.FLAG_ACTIVITY_MULTIPLE_TASKインテント フラグを追加することであることに気付きました。

しかし、これは (マニフェストで) Main2Activity android:taskAffinityをデフォルト以外 (つまり、現在のアクティビティのタスク アフィニティ以外) に設定した場合にのみ機能します。

問題は、同じアクティビティで別の新しいタスクを複数回作成できるようにしたいことです。

例:

Android Gmail アプリでは、「作成」ボタンを数回クリックすることができ、そのたびにコンポーザの「新しいインスタンス」が作成されます。まったく同じ動作を実現したいと思います。

どんな手掛かり?

どうもありがとう。

0 投票する
1 に答える
690 参照

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