デフォルトではアプリケーション内のActivityはできる限り同じタスクに属そうとする。これを
「親和性」と呼ぶ。しかし、この「親和性」も設定によって変更できる。以下それについて説明する。
関係するものは、以下のIntentフラグ。
FLAG_ACTIVITY_NEW_TASK
FLAG_ACTIVITY_CLEAR_TOP
FLAG_ACTIVITY_RESET_TASK_IF_NEEDED
FLAG_ACTIVITY_SINGLE_TOP
また、以下の<activity>属性も関係。
taskAffinity
launchMode
allowTaskReparenting
clearTaskOnLaunch
alwaysRetainTaskState
finishOnTaskLaunch
■FLAG_ACTIVITY_NEW_TASK
startActiviyのパラメータにFLAG_ACTIVITY_NEW_TASKを指定すると、新しい
タスクとして起動させることができる。
例)a⇒b⇒c(FLAG_ACTIVITY_NEW_TASK)
タスク タスク タスク タスク
|c| ← ここが表示
 ̄
| | | | | | | |
| |⇒|b|⇒|b|⇒|b|
|a| |a| |a| |a|
 ̄  ̄  ̄  ̄
■allowTaskReparenting
allowTaskReparentingがtrueになっていると、そのアクティビティと親和性のあるアプリがフォアグランドに来た際に、呼び出し元のアクティビティからそのアプリのタスクに移動できる(らしい)
例)アプリ①cb(allowTaskReparenting)⇒ホーム画面⇒アプリ②a⇒b
==フォアグラウンド====================================================
タスク タスク タスク
| | | | | |
|b|⇒ホーム画面⇒| |⇒|b|←ここが表示
|c| |a| |a|
 ̄  ̄  ̄
==バックグラウンド====================================================
↑↑↑
タスク タスク
| | | |
|b|⇒ ⇒ ⇒ ⇒| |
|c| |c|
 ̄  ̄
======================================================================
0 件のコメント:
コメントを投稿