android隱式intent使用場景解析


  Android 隱式intent相信大家都有用過,大部分場景我們用顯式intent已經能滿足我們的業務需求,隱式intent大部分都是用來啟動系統自帶的Activity或Service之類的組件。昨天有個業務場景就是,module app依賴於第三方依賴庫module library,我在module library里面有個Activity A,現在需要在Activity A里面啟動 module app里面的Activity B。一般的解決方法是:讓module library依賴於module app,這樣library就能找到app里面的Activity B,可是這樣就變成了雙向依賴,顯然是不可能的。我想了一下,可以用隱式intent來實現這個功能,而且實現代碼最簡潔,不用修改或添加其他代碼。

  隱式intent很簡單,首先要在 module app的AndroidManifest.xml里面注冊Activity B,代碼如下:

 

 <activity
            android:name="com.xjx.demo.home.BActivity"
            android:screenOrientation="portrait">
            <intent-filter>
                <action android:name="com.demoBActivity.action" />
                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
        </activity>

 

<intent-filter>是隱式intent必須的,其中<action android:name>屬性是自定義的,寫什么都可以,最好是自己的項目名,<category >屬性使用默認的 <category android:name="android.intent.category.DEFAULT" />。

  注冊Activity完成了,現在可以在module library里的Activity A啟動module app里的Activity B了。

代碼如下:

//這里用到了隱式意圖,來啟動app庫里面的activity
                Intent intent = new Intent();
                intent.setAction("com.demoBActivity.action");
                intent.addCategory("android.intent.category.DEFAULT");
                startActivity(intent);  

  action寫我們AndroidManifest注冊的action即可。

  這樣即可實現在被依賴的module libray里面啟動主module app中的Activity或其他組件。實現了module之間代碼的解耦。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM