liguofeng29’s blog

個人勉強用ブログだっす。

AndroidのActivity - LauncherMode

Andoridはアプリ起動時には

1. Taskを生成
2. アプリの入り口Activity起動(AdnroidManifest.xmlのMAIN指定されたもの)
AndroidはTaskについてAPIを提供してないため、
開発者はTaskのアクセスすることができなく、
ただActivityのgetTaskId()メソッドで所在中のTaskIDを取得する。
起動モードは
ActiviyとTask間のロード関係を制御する。
【Activity起動サンプル】

Intent intent = new Intent(MainActivity.this, SecondActivity.class);
startActivity(intent);

 

standardモード(デフォルトモード)

・常に新しいインスタンスを生成する
・同じTaskキュー内に存在する
上記サンプルコードをボタンイベントで3回実装した場合、下記のようになります

 

 

singleTopモード

・standardと基本同じだが、
・・Taskキュー内のトップの場合、新しいインスタンスを生成しなくそのまま使用する
・・Taskキュー内のトップのでない場合、新しいインスタンスを生成する

 

singleTaskモード

・同じTaskキュー内で一つのみ存在する。
・・起動するActivityがTaskキュー内に存在しない場合、Activityを生成しTaskキューのトップに入れる
・・Taskキュー内のトップの場合、singleTopと同じ
・・Taskキュー内のトップのでない場合、起動Activity上にあるActivityのすべてTaskキューから抜き出す

 

singleInstanceモード

・どのTaskキュー内でもいいので、Activityは一つだけインスタンスを生成する
・・ActivityがどのTask内にもない時、新規TaskキューにActivityの生成して入れる
・・どのアプリ、どのTaskキューでも存在する場合、システムはそのTaskの前面に移動させ、Activityを表示する
※このモードは、Taskキュー内では常に一つのActivityのみ存在する。