Intent的顯式啟動和隱式啟動

1.概念區(qū)分

顯式啟動:按名稱(完全限定類名)指定要啟動的組件,即直接指定要跳轉(zhuǎn)的Activity類名,不用過濾,效率高,適用于同一個(gè)應(yīng)用中的不同Activity跳轉(zhuǎn)。
  隱式啟動:不會指定特定的組件,而是聲明要執(zhí)行的常規(guī)操作,從而允許其他應(yīng)用中的組件來處理它,即通過IntentFilter可以找到所有之匹配的應(yīng)用,適用于不同應(yīng)用之間的Activity跳轉(zhuǎn)。

2.代碼實(shí)現(xiàn)

2.1顯式啟動

顯式啟動方式一
   該方式最常用的,通過構(gòu)造方法傳入Component。

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

顯式啟動方式二
   該方式通過setComponent方法去實(shí)現(xiàn)。

  Component component = new Component(this,SecondActivity.class);
  Intent intent = new Intent();
  intent.setComponent(component);
  startActivity(intent);

顯式啟動方式三
   該方式通過setClass/setClassName方法去實(shí)現(xiàn)。

  Intent intent = new Intent();
  intent.setclass(this,SecondActivity.class);
  //intent.setClass(this.getPackageName,"com.ydscience.SecondActivity");
  startActivity(intent);

2.2隱式啟動

在AndroidManifest.xml文件中進(jìn)行聲明,對Action進(jìn)行自定義,自定義的名字可以任意寫。

    <activity android:name=".SecondActivity">
           <intent-filter>
                <action android:name="com.ydscience"/>
                <category  android:name="android.intent.category.DEFAULT"/>
            </intent-filter>
        </activity>

調(diào)用方式如下

  Intent intent = new Intent();
  intent.setAction("com.ydscience");
   intent.addCategory("android.intent.category.DEFAULT");
  startActivity(intent);

以上的這種隱式啟動方式如何遇到可能沒有任何應(yīng)用處理發(fā)送到
的隱式 Intent,這種情況下會遇到程序崩潰,如果要驗(yàn)證 Activity 是否會接收 隱式啟動的Intent,就要對Intent 對象調(diào)用 resolveActivity()。
  實(shí)現(xiàn)方式如下:

  Intent intent = new Intent();
  intent.setAction("com.ydscience"); 
  intent.addCategory("android.intent.category.DEFAULT");
   if(intent.resolveActivity(getPackageManager())!= null){
     startActivity(intent);
   }

附Intent七大屬性:由以下各個(gè)組成部分:

component(組件):目的組件
  action(動作):用來表現(xiàn)意圖的行動
  category(類別):用來表現(xiàn)動作的類別
  data(數(shù)據(jù)):表示與動作要操縱的數(shù)據(jù)
  type(數(shù)據(jù)類型):對于data范例的描寫
  extras(擴(kuò)展信息):擴(kuò)展信息
  Flags(標(biāo)志位):期望這個(gè)意圖的運(yùn)行模式

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容