- 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() は実行されません。
スポンサーサイト
Activity の上段に表示されるタイトルバーの設定方法です。
■ 画面イメージ -----------------------------------------------

■ タイトルバー設定 -------------------------------------------
タイトルバーに表示する文字列と文字色の設定は Javaソースコードで設定できますが
背景色はスタイルからしか設定することができません。
表示・非表示の切り替えは Activity#requestWindowFeature(int featureId) で行えます。
ただし Activity#setContentView の前に呼び出さないとエラーが発生してしまいます。
■ 画面イメージ -----------------------------------------------

■ タイトルバー設定 -------------------------------------------
タイトルバーに表示する文字列と文字色の設定は Javaソースコードで設定できますが
背景色はスタイルからしか設定することができません。
表示・非表示の切り替えは Activity#requestWindowFeature(int featureId) で行えます。
ただし Activity#setContentView の前に呼び出さないとエラーが発生してしまいます。
package jp.inujirushi.sample.activity;
import android.app.Activity;
import android.graphics.Color;
import android.os.Bundle;
import android.widget.LinearLayout;
public class TitleActivity extends Activity {
/** アクティビティを生成したときに呼ばれます。 */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// タイトルを非表示にする(setContentView より前に呼び出さないとエラー)
//requestWindowFeature(Window.FEATURE_NO_TITLE);
// 画面を設定する
setContentView(R.layout.main);
// タイトル名を設定する
setTitle("てすと");
// タイトル色を設定する
setTitleColor(Color.BLACK);
}
}
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="SampleTitle">
<item name="android:windowTitleBackgroundStyle">@style/TitleColor</item>
</style>
<style name="TitleColor">
<item name="android:background">#ffffffff</item>
</style>
</resources>
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="jp.inujirushi.sample"
android:versionCode="1"
android:versionName="1.0">
<uses-sdk android:minSdkVersion="8" />
<application android:icon="@drawable/icon" android:label="@string/app_name">
<activity android:label="@string/app_name" android:name=".activity.TitleActivity"
android:theme="@style/SampleTitle">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>