Surface DuoでのstartActivityの挙動をメモしたものです。基本的にはドキュメントに書いてある内容です。
定義
- それぞれの画面はペインと呼びます。
- ホーム画面が表示されているペインは空き状態と呼びます。
- なにかアプリが起動しているペインは占有状態と呼びます。
挙動
- ペインに表示されいてるアプリがstartActivityを呼ぶと、同じペインにアクティビティが表示されます
- ただし、Intent.FLAG_ACTIVITY_NEW_TASKが設定されているかつ、もう一方のペインが空き状態の場合は空きペインに表示されます
- ただし、もう一方のペインが空き状態でない場合は、呼び出したアクティビティと同じペインに表示されます
- ただし、Intent.FLAG_ACTIVITY_NEW_TASKが設定されているかつ、もう一方のペインが空き状態の場合は空きペインに表示されます
表にしておきます。
左側ペインにアプリAを起動して、異なるパッケージに属するアクティビティをstartActivityしたことを想定。
Flags | 右側ペインの状態 | 起動場所 |
---|---|---|
なし | 空き | 左 |
なし | 占有 | 左 |
FLAG_ACTIVITY_NEW_TASK | 空き | 右 |
FLAG_ACTIVITY_NEW_TASK | 占有 | 左 |
同じパッケージに属するアクティビティをstartActivityする場合はIntent.FLAG_ACTIVITY_MULTIPLE_TASKを付けないと、常に同じペインで表示されます。