- Date: Thu 24 11 2011
- Category: Android
- Response: Comment 0 Trackback 0
タスク管理 - インテントフラグ:Intent#setFlags
Intent#setFlags はstartActivity()によりアクティビティを起動する際に、アクティビティのタスクへの関連付けの変更に使用します。
関連付けを変更することで、スタックにつまれたアクティビティを削除するなどできます。
Reference: Intent
ソフトウェア技術ドキュメントを勝手に翻訳 - 1.3 タスクとバックスタック - タスクの管理
■ ソースコードで定義 -----------------------------------------
■ インテントフラグ種類 ---------------------------------------
Intent#FLAG_ACTIVITY_NEW_TASK
新しいタスクでアクティビティを開始します。
Intent#FLAG_ACTIVITY_SINGLE_TOP
現在表示中のアクティビティ(スタック最上位)が自身と同じアクティビティを開始した場合、起動しない。
動作は以下の通り(A、B、C、Dはアクティビティ)
・A→B→C→D→D にはならない。A→B→C→Dのまま。
・A→B→C→D→B にはなる。
Intent#FLAG_ACTIVITY_CLEAR_TOP
開始されたアクティビティがすでに現在のタスクで実行中の場合、実行中のアクティビティを再開する。
再開されたアクティビティより上に詰まれた(新しい)アクティビティはすべてが破棄される。
動作は以下の通り(A、B、C、Dはアクティビティ)
・A→B→C→D の時にDがBを呼ぶ
・A→B (CとDは破棄される)
※破棄されるアクティビティは onDestory() が実行されます。
呼び出し元の onPause()、onStop() は実行されません。
関連付けを変更することで、スタックにつまれたアクティビティを削除するなどできます。
Reference: Intent
ソフトウェア技術ドキュメントを勝手に翻訳 - 1.3 タスクとバックスタック - タスクの管理
■ ソースコードで定義 -----------------------------------------
Intent intent = new Intent(this, NextActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
startActivity(intent);
■ インテントフラグ種類 ---------------------------------------
Intent#FLAG_ACTIVITY_NEW_TASK
新しいタスクでアクティビティを開始します。
Intent#FLAG_ACTIVITY_SINGLE_TOP
現在表示中のアクティビティ(スタック最上位)が自身と同じアクティビティを開始した場合、起動しない。
動作は以下の通り(A、B、C、Dはアクティビティ)
・A→B→C→D→D にはならない。A→B→C→Dのまま。
・A→B→C→D→B にはなる。
Intent#FLAG_ACTIVITY_CLEAR_TOP
開始されたアクティビティがすでに現在のタスクで実行中の場合、実行中のアクティビティを再開する。
再開されたアクティビティより上に詰まれた(新しい)アクティビティはすべてが破棄される。
動作は以下の通り(A、B、C、Dはアクティビティ)
・A→B→C→D の時にDがBを呼ぶ
・A→B (CとDは破棄される)
※破棄されるアクティビティは onDestory() が実行されます。
呼び出し元の onPause()、onStop() は実行されません。
スポンサーサイト