1. 程式人生 > >Android學習筆記整理(8)--Activity的顯式意圖和隱式意圖

Android學習筆記整理(8)--Activity的顯式意圖和隱式意圖

Android中Intent尋找目標元件的方式分為兩種,一種是顯式意圖,另一種是隱式意圖

1.顯式意圖

在通過Intent啟動Activity時,需要明確指定啟用元件的名稱。在程式中,如果需要在本應用中啟動其他的Activity時,可以使用顯式意圖來啟動Activity,示例程式碼如下

Intent intent=new Intent(this,Activity02.class);//建立Intent物件
startActivity(intent);//開啟Activity

上述程式碼主要是通過Intent的構造方法來建立Intent物件,構造方法接受兩個引數,一個是Context要求提供一個啟動Activity的上下文,第二個引數Class則是指定要啟動的目標Activity。

除了通過指定類名開啟元件外,顯式意圖還可以根據目標元件的包名、全路徑名來指定開啟元件

intent.setClassName("com.example.Activity","com.example.Activity.XXX");
startActivity(intent);

2.隱式意圖

沒有明確指定元件名的Intent稱為隱式意圖。Android系統會根據隱式意圖中設定的動作(action)、類別(category)、資料(Uri和資料型別)找到最合適的元件。

<activity android:name="com.example.intent.Activity02">
     <intent-filter>
          <action android:name="com.example.xxx"/>
          <category android:name="android.intent.category.DEFAULT"/>
     </intent-filter>
</activity>

上述程式碼中,<action>標籤指明瞭當前Activity可以相應的動作為"com.example.xxx”,而<category>標籤則包含了一些類別的資訊,只有當<action>和<category>中的內容同時匹配時,Activity才會同時被開啟

在Activity類中程式碼如下

Intent intent=new Intent();//建立Intent物件
intent.setAction("com.example.xxx");//設定動作和清單檔案一樣
startActivity(intent);//開啟Activity

3.兩種意圖使用的情景

顯式意圖開啟元件時必須要指定元件的名稱,一般只在本應用程式切換元件時使用

隱式意圖功能要比顯式意圖更加強大,不僅可以開啟本應用的元件,還可以開啟其他應用的元件,例如開啟系統自帶的功能(照相機,瀏覽器等)。