tmytのらくがき

個人の日記レベルです

startActivityの挙動

Surface DuoでのstartActivityの挙動をメモしたものです。基本的にはドキュメントに書いてある内容です。

定義

  • それぞれの画面はペインと呼びます。
  • ホーム画面が表示されているペインは空き状態と呼びます。
  • なにかアプリが起動しているペインは占有状態と呼びます。

挙動

  • ペインに表示されいてるアプリがstartActivityを呼ぶと、同じペインにアクティビティが表示されます
    • ただし、Intent.FLAG_ACTIVITY_NEW_TASKが設定されているかつ、もう一方のペインが空き状態の場合は空きペインに表示されます
      • ただし、もう一方のペインが空き状態でない場合は、呼び出したアクティビティと同じペインに表示されます

表にしておきます。

左側ペインにアプリAを起動して、異なるパッケージに属するアクティビティをstartActivityしたことを想定。

Flags 右側ペインの状態 起動場所
なし 空き
なし 占有
FLAG_ACTIVITY_NEW_TASK 空き
FLAG_ACTIVITY_NEW_TASK 占有

同じパッケージに属するアクティビティをstartActivityする場合はIntent.FLAG_ACTIVITY_MULTIPLE_TASKを付けないと、常に同じペインで表示されます。