My Photo

« 第23節、新潟スコアレスドロー、磐田は赤嶺にまたやられたけどなんとかドロー | Main | 寝つきはすごく悪い »

August 25, 2011

Androidアプリ開発メモ014:Intentその2

Intentについてもう少し詳しく。
ここに書いてあることを自分なりに理解して要約。自信ないけど。

Intentの配信

アクティビティに配信

  • Context.startActivity()
  • Activity.startActivityForResult()

サービスに配信

  • Context.startService()
  • Context.bindService()

ブロードキャストレシーバに配信

  • Context.sendBroadcast()
  • Context.sendOrderedBroadcast()
  • Context.sendStickyBroad

Intentに含まれる主な情報

コンポーネント名

  • Componentオブジェクト。Intentを受けとるコンポーネント名。
  • これが設定されているIntentを明示的オブジェクトと言う。

アクション

  • 動作の文字列名。アクティビティアクションとブロードキャストアクションがある。

データ

  • データのURIとMIMEタイプ。アクションと対になっていることが多い。

カテゴリ

  • Intentを受け取ることができるコンポーネントの種類の付加的な情報を表す文字列。

エクストラ
フラグ

明示的Intent・暗黙的Intent
明示的IntentはコンストラクタやsetComponent(),setClass()でコンポーネント名が設定されたIntentで、明示的Intentを付けてstartActivity()を実行すれば設定されたアクティビティが起動する。

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

暗黙的Intentは明示的IntentではないIntent。暗黙的Intentを付けてstartActivity()を実行した場合はシステムがIntentのアクション、データ、カテゴリーから適切なアクティビティを選択して起動する。
暗黙的Intentを使用したほうがコンポーネント間の結合が疎になる。

インテントフィルタ
アクティビティ、サービス、ブロードキャストレシーバがどのIntentを受け取るシステムに知らせる設定というかオブジェクトというか。
アクティビティの場合、AndroidManifest.xmlのactivity要素の子要素に設定する。

<activity android:name=".ActivityExample"
                  android:label="@string/app_name">
  <intent-filter>
    <action android:name="android.intent.action.MAIN" />
    <category android:name="android.intent.category.LAUNCHER" />
  </intent-filter>
</activity>

上記ではアクションにACTION_MAIN、カテゴリにCATEGORY_LAUNCHERが設定されている。アプリの最初のアクティビティにはこのインテントフィルタが必要だと思われる。

ACTION_MAIN:データ入力なしかつ出力の返却なしで、タスクの初期アクティビティとして開始する。
CATEGORY_LAUNCHER:タスクの初期アクティビティになれるまたはアプリケーションランチャーのトップレベルにリストされているアクティビティ。

2011/9/9追記:
インテントフィルタを持たないコンポーネントは明示インテントのみ受け取れる。
インテントフィルタを持つコンポーネントは明示・暗黙のどちらのインテントも受け取れる。

« 第23節、新潟スコアレスドロー、磐田は赤嶺にまたやられたけどなんとかドロー | Main | 寝つきはすごく悪い »

Androidアプリ開発」カテゴリの記事

Comments

Post a comment

(Not displayed with comment.)

TrackBack

TrackBack URL for this entry:
http://app.cocolog-nifty.com/t/trackback/26461/52566511

Listed below are links to weblogs that reference Androidアプリ開発メモ014:Intentその2:

« 第23節、新潟スコアレスドロー、磐田は赤嶺にまたやられたけどなんとかドロー | Main | 寝つきはすごく悪い »

April 2017
Sun Mon Tue Wed Thu Fri Sat
            1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30            
無料ブログはココログ

日本blog村

  • にほんブログ村 IT技術ブログへ
  • にほんブログ村 アニメブログへ
  • にほんブログ村 サッカーブログ アルビレックス新潟へ

好きな音楽家

メモ

XI-Prof