例えば画面a、b、cで構成されるアプリがあるとしa⇒b⇒cと画面を開くと
内部では以下のようにタスクに積まれていく。
例) a⇒b⇒c
タスク タスク タスク タスク
| | | | | | |c|← ここが表示
| |⇒|b|⇒|b|⇒|b|
|a| |a| |a| |a|
 ̄  ̄  ̄  ̄
タスクはオブジェクトを保持するので、複数おなじ画面を開いても基本は
別々にインスタンスがタスクに格納される。
例) a⇒b⇒b
タスク タスク タスク タスク
| | | | | | |b|← ここが表示
| |⇒|b|⇒|b|⇒|b|
|a| |a| |a| |a|
 ̄  ̄  ̄  ̄
まあタスクはプッシュ・ポップ型になっており、startActivity()を呼ぶとタスクに
プッシュされ、戻るボタンを押下するとタスクからポップされる。
例) a⇒b⇒c⇒「戻る押下」
タスク タスク タスク タスク タスク
| | | | | | |c| | |
| |⇒|b|⇒|b|⇒|b|⇒|b|← ここが表示
|a| |a| |a| |a| |a|
 ̄  ̄  ̄  ̄  ̄
さらにタスクのアクティビティは1つのユニットとして移動する。
例えばa、b、cで構成されたアプリ①があり、ホーム画面を押し別のx、y、zで
構成されるアプリ②を呼び出すと、①アプリ1つのユニットとしてバックグラウンド
に一旦引っ込み、②のタスクユニットがフォアグラウンドに呼ばれる。そのあと
またホーム画面を表示し①のアプリをよんで戻るボタンを押下しても②のアプリ
は表示されず、b画面が表示される。
例)アプリ①(abc)⇒ホーム⇒アプリ②(xyz)⇒ホーム⇒アプリ①(abc)⇒戻る
==フォアグラウンド====================================================
タスク タスク タスク タスク
|c| |z| |c| | |
|b|⇒ホーム画面⇒|y|⇒ホーム画面⇒|b|⇒|b|←ここが表示
|a| |x| |a| |a|
 ̄  ̄  ̄  ̄
==バックグラウンド====================================================
タスク
|c|
|b|⇒ ⇒ ⇒ ⇒ ⇒ ⇒ ↑↑↑
|a|
 ̄
タスク
|z|
|y|⇒ ⇒ ⇒ ⇒ ⇒
|x|
 ̄
======================================================================
上記は基本だが、ほとんどの状態を変更できる。親和性と新しいタスクで説明。
0 件のコメント:
コメントを投稿