AndroidのIntent分析
6099 ワード
一、Intentの概要androidのIntentは目的であり、意図的な意味であり、androidが提供するアプリケーション間の相互作用と通信を支援するメカニズムである.intentはアプリケーション間だけでなく、アプリケーション内部間のActivity/serviceのインタラクションにも適用でき、Intentの使用では関数の呼び出しは表示されません.関数の呼び出しよりもIntentの方が抽象的で、Intentを呼び出す基本要素はActivity/Serviceです.
二、Intentの基本的な使い方AndroidにはIntentに関するものとしてAction/CategoryやIntentFilterなど、放送用のIntentがありますが、以下ではIntentの2つの基本的な使い方を説明します.表示されるIntentは、Intentオブジェクトを構築すると受信者を指定します.2.ステルスのIntent、すなわちIntentの送信者は、Intentオブジェクトを構築する際に、受信者が誰であるかを知らず、関心も持たない.(1)表示するIntent 1.同じアプリケーション間のActivityの切り替えは、通常、1つのアプリケーションで複数のUI画面が必要であり、複数のActivityクラスが必要であり、これらのActivity間で切り替えが行われる.この切り替えは、Intentメカニズムによって実現される、同じアプリケーションでActivityを切り替えるときに、起動するActivityが具体的にどれであるかを知ることが多い.したがって、明示的なIntentで実装されることがよくあります.次の例は、2つのUI画面、すなわち2つのActivityであるSimpleIntentTestクラスとTestActivityクラスを含む非常に簡単なアプリケーションSimpleIntentTestを実現するために使用され、SimpleIntentTestクラスにはTestActivityを起動するためのボタンがあります.プログラムのコードは非常に簡単で、SimpleIntentTestクラスのソースコードは以下の通りです.
Intent intent = new Intent( this , TestActivity. class ); startActivity(intent); ここでIntentオブジェクトを定義する際に使用されるのは、Intentのコンストラクション関数の1つです.Intent(Context packageContext,Class)
2.異なるアプリケーション間のActivityの切り替え
(2).暗黙的Intent(Implicit Intent)は、Intentメカニズムが上記の明示的なIntentの使い方を提供するだけであれば、このような比較的複雑なメカニズムの意味は大きくないようだ.確かに、Intentメカニズムのより重要な役割は、Intentの送信者が受信者を指定することなく、受信者が誰であるかを知らず、Androidフレームワークによって最も一致する受信者1を探すことにある.最も簡単な暗黙的なIntentでは、Androidが持つ電話機能を起動するためのDialerプログラムを定義します.
Intentを表示する方式とは異なり、この方式は受信者を指定し、Intentを初期化する際にはIntentのみが入る.ACTION_DIALパラメータ、どの受信者をサポートするかは表示されません.2.受信者を追加受信者が何らかのIntentを受信することを望む場合はAndroid Mainfestが必要である.xmlにActivityの宣言を追加し、対応するIntentFilter、Actionを設定します.
Intent FilterおよびAction、Categoryなどの概念--Intent送信者はActionを設定して行う動作を説明するが、Intentの受信者はAndroid Manifestにある.xmlファイルでは、Intent Filterを設定することで、自分が受信できるIntentを宣言します.
二、Intentの基本的な使い方AndroidにはIntentに関するものとしてAction/CategoryやIntentFilterなど、放送用のIntentがありますが、以下ではIntentの2つの基本的な使い方を説明します.表示されるIntentは、Intentオブジェクトを構築すると受信者を指定します.2.ステルスのIntent、すなわちIntentの送信者は、Intentオブジェクトを構築する際に、受信者が誰であるかを知らず、関心も持たない.(1)表示するIntent 1.同じアプリケーション間のActivityの切り替えは、通常、1つのアプリケーションで複数のUI画面が必要であり、複数のActivityクラスが必要であり、これらのActivity間で切り替えが行われる.この切り替えは、Intentメカニズムによって実現される、同じアプリケーションでActivityを切り替えるときに、起動するActivityが具体的にどれであるかを知ることが多い.したがって、明示的なIntentで実装されることがよくあります.次の例は、2つのUI画面、すなわち2つのActivityであるSimpleIntentTestクラスとTestActivityクラスを含む非常に簡単なアプリケーションSimpleIntentTestを実現するために使用され、SimpleIntentTestクラスにはTestActivityを起動するためのボタンがあります.プログラムのコードは非常に簡単で、SimpleIntentTestクラスのソースコードは以下の通りです.
public class SimpleIntentTest extends Activity implements View.OnClickListener{
@Override
public void onCreate(Bundle savedInstanceState) {
super .onCreate(savedInstanceState);
setContentView(R.layout. main );
Button startBtn = (Button)findViewById(R.id. start_activity );
startBtn.setOnClickListener( this );
}
public void onClick(View v) {
switch (v.getId()) {
case R.id. start_activity :
Intent intent = new Intent( this , TestActivity. class );
startActivity(intent);
break ;
default :
break ;
}
}
}
Intent intent = new Intent( this , TestActivity. class ); startActivity(intent); ここでIntentオブジェクトを定義する際に使用されるのは、Intentのコンストラクション関数の1つです.Intent(Context packageContext,Class)
< activity android:name = ".TestActivity" />
2.異なるアプリケーション間のActivityの切り替え
Intent intent = new Intent();
intent.setClassName( "com.tope.samples.intent.simple" ,
"com.tope.samples.intent.simple.TestActivity" );
startActivity(intent);
(2).暗黙的Intent(Implicit Intent)は、Intentメカニズムが上記の明示的なIntentの使い方を提供するだけであれば、このような比較的複雑なメカニズムの意味は大きくないようだ.確かに、Intentメカニズムのより重要な役割は、Intentの送信者が受信者を指定することなく、受信者が誰であるかを知らず、Androidフレームワークによって最も一致する受信者1を探すことにある.最も簡単な暗黙的なIntentでは、Androidが持つ電話機能を起動するためのDialerプログラムを定義します.
public class ImplicitIntentTest extends Activity
implements View.OnClickListener{
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super .onCreate(savedInstanceState);
setContentView(R.layout. main );
Button startBtn = (Button)findViewById(R.id. dial );
startBtn.setOnClickListener( this );
}
public void onClick(View v) {
switch (v.getId()) {
case R.id. dial :
Intent intent = new Intent(Intent. ACTION_DIAL );
startActivity(intent);
break ;
default :
break ;
}
}
}
Intentを表示する方式とは異なり、この方式は受信者を指定し、Intentを初期化する際にはIntentのみが入る.ACTION_DIALパラメータ、どの受信者をサポートするかは表示されません.2.受信者を追加受信者が何らかのIntentを受信することを望む場合はAndroid Mainfestが必要である.xmlにActivityの宣言を追加し、対応するIntentFilter、Actionを設定します.
< activity android:name = ".TestActivity" >
< intent-filter >
< action android:name = "android.intent.action.DEFAULT" />
< action android:name = "android.intent.action.DIAL" />
< category android:name = "android.intent.category.DEFAULT" />
intent-filter >
activity >
Intent FilterおよびAction、Categoryなどの概念--Intent送信者はActionを設定して行う動作を説明するが、Intentの受信者はAndroid Manifestにある.xmlファイルでは、Intent Filterを設定することで、自分が受信できるIntentを宣言します.