乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      隱式Intent與顯示Intent的區(qū)別

       jiffes 2019-02-14

      顯式Intent:通過指定Intent組件名稱來實現(xiàn)的,它一般用在知道目標(biāo)組件名稱的前提下,去調(diào)用Intent.setComponent()、Intent.setClassName()或Intent.setClass()方法或者在new Intent(A.this,B.class)指明需要轉(zhuǎn)向到的Activity,顯式意圖明確指定了要激活的組件是哪個組件,一般是在應(yīng)用程序內(nèi)部使用。

      1. Intent intent = new Intent();
      2. intent.setClassName("com.android.deskclock","com.android.deskclock.DeskClock");
      3. startActivity(intent);

      隱式Intent:通過在清單文件中配置IntentFilter來實現(xiàn)的,它一般用在沒有明確指出目標(biāo)組件名稱的前提下,當(dāng)一個應(yīng)用要激活另一個應(yīng)用中的Activity時(看不到源代碼),只能使用隱式意圖,根據(jù)Activity配置的意圖過濾器建一個意圖,讓意圖中的各項參數(shù)的值都跟過濾器匹配,這樣就可以激活其他應(yīng)用中的Activity。Android系統(tǒng)會根據(jù)隱式意圖中設(shè)置的動作(action)、類別(category)、數(shù)據(jù)(URI和數(shù)據(jù)類型)找到最合適的組件來處理這個意圖。一般是用于在不同應(yīng)用程序之間,如果想隱式intent不可以被跨應(yīng)用啟動只需要在AndroidManifest.xml對應(yīng)的activity中配置android:exported="false"即可。

      1. //分享功能就是通過隱式Intent完成的。
      2. Intent sendIntent = new Intent();
      3. sendIntent.setAction(Intent.ACTION_SEND);
      4. sendIntent.putExtra(Intent.EXTRA_TEXT,"This is my text to send.");
      5. sendIntent.setType("text/plain");
      6. startActivity(sendIntent);

      使用隱式intent啟動activity的時候如果有兩個action配置是一樣的,那么啟動的時候系統(tǒng)就會彈出對話框讓你選擇去啟動哪一個,那么怎么過濾掉自己不想啟動的哪一個呢,可以自定義URL使用Scheme方式喚起Activity或App,這樣就可以對同一個action進行區(qū)分了! 

      1. <intent-filter>
      2. <action android:name="android.intent.action.VIEW"></action>
      3. <category android:name="android.intent.category.DEFAULT"></category>
      4. <category android:name="android.intent.category.BROWSABLE"></category>
      5. <data
      6. android:scheme="app"
      7. android:host="test">
      8. </data>
      9. </intent-filter>
      10. <!--
      11. android:scheme="app"表示配置接受的協(xié)議為app,相當(dāng)于http://www.baidu.com中的http或者h(yuǎn)ttps
      12. android:host="test"表示配置接受的域名為test,相當(dāng)于http://www.baidu.com中的www.baidu.com
      13. -->
      1. //隱式Intent寫法為:
      2. Uri uri=Uri.parse("app://test");
      3. Intent intent=new Intent(Intent.ACTION_VIEW,uri);
      4. startActivity(intent);

       

      顯示intent效率高,系統(tǒng)直接精確定位要啟用的組件,但耦合度也高,如果通過這種方式調(diào)用一些系統(tǒng)組件的話,容易因為版本更新,類名、包名、包結(jié)構(gòu)變化等原因?qū)е鲁绦虮罎ⅰk[式意圖能夠降低程序的耦合度,但由于每次意圖執(zhí)行的時候,系統(tǒng)都會搜索所有可用的intentfilter,來查看是否有匹配的內(nèi)容,所以效率更低。

        本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
        轉(zhuǎn)藏 分享 獻花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多