IntensとIntent Filters


転載は出典を明記してください.
http://blog.csdn.net/coder_ジョン/articale/detail/40044079
    Intentは、他のアプリケーションコンポーネントから動作(action)を要求するために使用できるメッセージ伝達オブジェクトであり、様々な方法で異なるコンポーネントの連絡を促進することができ、開発では主に以下の3つに使用される.
一、一つのインターフェースを起動する(Activity)
    私たちはActivityを起動してユーザーインターフェースに展示する必要があります.Intentを通じてオペレーティングシステムに知らせ、ジャンプするActivityの類名を指定します.オペレーティングシステムはまた私たちの意図によって指定されたActivityにジャンプします.次のようにActivityを起動します.ここでcontextはアプリケーションのコンテキストです.XXは起動が必要なActivityのクラス名です.
Intent intent = new Intent(context, XX.class);
startActivity(intent);
IntentはオペレーティングシステムにActivityの起動を知らせると同時に単一のデータを携帯することができます.
Intent intent = new Intent(context, XX.class);
intent.putExtra("extra_key", extra_value);
startActivity(intent);
一組のデータを携帯してもいいです.(上に単一のデータを持つ方式に代えて、以下のようにしてもいいです.)
Intent intent = new Intent(context, XX.class);
Bundle bundle = new Bundle();
bundle.putString("string_extra_key", "string_extra_value");
bundle.putInt("int_extra_key", int_extra_value);
...
intent.putExtras(bundle);
startActivity(intent);
上記のようにActivityを起動しましたが、私たちはどのようにして伝達されたデータを取得しますか?実は簡単です.データを得るコードを見てみます.
Intent intent = getIntent();
String extraData = intent.getStringExtra("string_extra_key");
Bundleを通じてデータを取得することができます.
Intent intent = getIntent();
Bundle bundle = intent.getExtras();
String stringExtraData = bundle.getStringExtra("string_extra_key");
int intExtraData = bundle.getBoolean("int_extra_key");
...
どのようにActivityを起動するかを知ってから、もう一つの起動インターフェースの方法を習得する必要があります.日常開発における具体的な需要に対応しています.AインターフェースからBインターフェースにいくつかのデータを伝達し、Bインターフェースで一定の処理をしてからAインターフェースに戻り、処理済みのデータを持ち帰る必要があります.(intent、 request Code)は、コアコードは以下の通りである(REQUSTCODEは要求コードであり、0以上の整数であり、異なる要求を区別するために使用される.なぜなら、私たちは一つのインターフェースがstartActivityForResoultを通過する可能性があるからである. request Code)は複数のインタフェースを起動して、例えば私達は一つのユーザー資料に設定されたインタフェースで、ニックネームと個性の署名を設定してそれぞれ二つの異なるインタフェースで完成します.
Intent intent = new Intent(context, B.class);
intent.putExtra("extra_key", extra_value);
startActivityForResult(intent, REQUESTCODE);
Bインターフェイスで転送されたデータを取得して処理終了ボタンを押した後、処理されたデータをAインターフェースに返す必要があります.具体的なコードは以下の通りです.
Intent intent = new Intent();
Bundle bundle = new Bundle();
bundle.putString("str_extra_key", "string_extra_value");
bundle.putInt("int_extra_key", int_extra_value);
...
intent.putExtras(bundle);
setResult(RESULT_OK, intent);
   AインターフェースではどうやってBインターフェースから伝達されたデータを受信しますか?実は簡単です.往々にして複雑なものはAPIの下の階に封入されています.私たちはどうやって使うかを知っていればいいです.私たちが必要なのはAインターフェースでOActivityResoultを複写することです. request Code 要点 reult Code Intent data)方法は、見ましたよね.私たちが必要とするパラメータは全部持ってきました.簡単ですか?帰りはどのrequest Codeかを判断します.(つまり、startActivityForResoultを通過したばかりです. REQUSTCODEは、BインターフェースのREQUSTCODEを起動し、その後、resuLtCodeを判断する(注:リターンコードのもう一つの役割は、Aインターフェースに処理の結果を通知することであり、RESULT_uCANCEEDを含む. 、RESULT_OK、RESULT_FIRSTUUSERの三つの定数は、BインターフェースのsetsResult(reult Code)にあります. intent)で指定されているものの一つは、具体的にいつリターンコードが上の3つのいずれに対応するかを自分で試してみてもいいです.完了したらintentからデータを取得する方法は、Bインターフェースで取得するのと同じです.ここでは説明を省略します.
二、サービスの開始(Service)
    サービス(Service)はActivityと同級で、Androidの4つの基本コンポーネントの一つであり、Activityとは違って、Serviceはユーザーインタフェースのディスプレイに使うのではなく、ファイルダウンロードや音楽再生などのバックグラウンド操作を処理するために使われています.一つのサービスを開始する方法は二つのstartServiceがあります. serviceとbindService (Intent service ServiceConnection conn 要点 flags
    まず、startServiceの使い方を見てみます. サービスを開始し、いくつかのデータを転送します.ここで、MyServiceはServiceから継承されたサブクラスです.
Intent intent = new Intent(context, MyService.class);
Bundle bundle = new Bundle();
bundle.putString("string_extra_key", "string_extra_value");
...
intent.putExtras(bundle);
startService(intent);
上のコードを見たら、一つのサービスを起動するのは一つのインターフェースを起動するのと同じだと思いますか?はい、ただ類名を変えました.
startServiceを使う以外は サービスを開始します.私たちはビッドサービスを通してもいいです. service ServiceConnection conn 要点 flags)サービスを開始します.これは前の方法よりやや複雑です.具体的にはここをどうやって使うかは説明しません.後の更新された微博で詳しく紹介されます.ここではIntentの役割を見てみます.
Intent intent = new Intent(context, MyService.class);
bindService(intent, conn, Context.BIND_AUTO_CREATE);
Intentが演じるのは、起动するサービスのクラス名とデータを伝える携帯です.
三、放送を送る(Broadcast)
    放送はどんなアプリケーションでも受信できるメッセージです.オペレーティングシステムはシステムイベントのために様々な放送を送ります.システムの再起動や設備の充電開始など、他のアプリケーションやアプリケーションコンポーネントにもIntentを介してブロードキャストしてもいいです.コアコードは以下の通りです.
Intent intent = new Intent();
intent.setAction(BROADCAST_ACTION);
sendBroadcast(intent);
もちろん、あなたもIntentを通じていくつかのデータを伝えることができます.BroadcastReceiverのonReceive(Contect) context Intent intent)コールバック法ではこれらのデータを取ることができます.
    AndroidがIntentを通じてどのActivity、Service、BroadcastReceiverをアクティブにするかを明確に知ることができたのはIntentのおかげです. Filtersは、すべてのActivity、Service、BroadcastReceiverがAndroid Manifest.xmlに配置されていますので、action、category、extra、flagsを指定できます.
    上記の学習を通じて、インタフェース、サービス、放送間の相互作用を紹介しました.サービスと放送部分の書き方が簡単です.