6

ユーザーがアプリを離れないようにしたい。ホームランチャーのアクティビティ/アプリケーションを介してこれを達成しようとしていますが、Android の動作がわかりません。初めて HOME を押すと、既存のアクティビティをフォアグラウンドに移動するのではなく、常に新しいタスクに新しいアクティビティが作成されます。HOMEを2回押しても何も起こりません。例を参照してください:

ログイン アクティビティ (A) と設定アクティビティ (B) があります。BはAから開きます。Aはランチャー(LAUNCHER、DEFAULT、HOMEカテゴリ)に設定されています。

  1. AがBを開く
    • タスク T1: A -> B
  2. 別の A が新しいタスクに作成されます (なぜですか?):
    • T1: A -> B
    • T2:あ
  3. A が B を開く (タスク T2)
    • T1: A -> B
    • T2: A -> B
  4. 何も起こらない、なぜ?

A のlaunchModesingleTopsingleTask、またはstandardのいずれかの場合、同じ動作が得られます。singleInstanceではA は 1 つしかありませんが、B は T1 で単独になり、私はそれを望んでいません。

常に新しいタスクが作成されるのはなぜですか? すべてのインテント フラグには、常にFLAG_ACTIVITY_NEW_TASKフラグが設定されています。なぜアンドロイドはそれをするのですか?

ここまたはここに投稿されたのと同じ動作ですか? Androidが新しいタスクを作成するため、Aが常にルートになるため、そのソリューションを使用できません。(または、これが 2 番目のインスタンスであることを確認するにはどうすればよいですか?)

B を一人にしたくないので、ここに投稿されたsingleInstanceを使用できません(A が表示されている場合、それは唯一のアクティビティとタスク (ログイン目的) でもあります)。ActivityManager を介して他のすべてのタスクを削除しようとしましたが、SDK >= 21 の場合、最小は 16 です。getAppTasks()

FLAG_ACTIVITY_BROUGHT_TO_FRONT フラグを使用する意図がないため、このソリューションを使用することさえできません。FLAG_ACTIVITY_RESET_TASK_IF_NEEDED フラグは常にあります。

私はlaunchMode、clearTaskOnLaunch、noHistoryなどと多くの組み合わせを試しました...しかし、何も成功しませんでした-常に新しいタスクです。

これを解決する方法はありますか?ロリポップで実行しています。ありがとうございました。

4

0 に答える 0