日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

Android插件化开发之解决OpenAtlas组件在宿主的注冊问题

發布時間:2025/3/21 Android 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android插件化开发之解决OpenAtlas组件在宿主的注冊问题 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Android插件化開發之解決OpenAtlas組件在宿主的注冊問題

OpenAtlas有一個問題,就是四大組件必須在Manifest文件里進行注冊,那么就必定帶來一個問題,插件中的組件都要反復在宿主中注冊。像Service,ContentProvider等組件眼下沒有什么好的解決方法。僅僅能在宿主中注冊。

可是像Activity,顯然是有解決方法的。就是使用Fragment取代Activity,Activity僅僅是作為一個放Fragment的容器,那么不僅在插件中不用再清單文件里注冊,就連宿主的注冊問題也一并攻克了。那么,解決方式呢,沒錯,就是之前寫的一篇博文Android使用Fragment打造萬能頁面切換框架。

在閱讀下文前,請務必先閱讀該文章。

可是使用該頁面切換框架也帶來一個問題。就是該框架中是通過反射調用Fragment,可是在宿主中假設直接使用反射,會報java.lang.ClassNotFoundException的錯誤。我們必須使用OpenAtlas提供的插件的ClassLoader來載入,為了支持OpenAtlas。我對該框架進行了改動,使其支持OpenAtlas

在配置類CoreConfig中添加兩個變量。控制是否啟用OpenAtlas,以及用于設置和獲得ClassLoader。并提供靜態的getter和setter方法

/*** Atlas支持 start*/ private static boolean isOpenAtlas=false; private static ClassLoader mBundleClassLoader =null;public static boolean isOpenAtlas() {return isOpenAtlas; }public static void setIsOpenAtlas(boolean isOpenAtlasFlag) {isOpenAtlas = isOpenAtlasFlag; }public static ClassLoader getBundleClassLoader() {return mBundleClassLoader; }public static void setBundleClassLoader(ClassLoader classLoader) {mBundleClassLoader = classLoader; } /*** Atlas支持 end*/

改動原來的核心函數。推斷CoreConfig中的布爾變量。是否啟用了OpenAtlas,默認是不啟用的。假設啟用了,則通過getBundleClassLoader函數獲得ClassLoader,可是前提是你調用了setBundleClassLoader函數設置了ClassLoader,返回的才不是空

/*** Atlas的支持 start*/ if (CoreConfig.isOpenAtlas()){ClassLoader bundleClassLoader = CoreConfig.getBundleClassLoader();if(bundleClassLoader==null){Log.d(TAG, "OpenAtlas bundle ClassLoader is null!");return null;}fragment = (BaseFragment) CoreConfig.getBundleClassLoader().loadClass(corePage.getClazz()).newInstance(); }else{fragment = (BaseFragment) Class.forName(corePage.getClazz()).newInstance(); } /*** Atlas的支持 end*/

之后在宿主中調用的時候,記得開啟OpenAtlas的支持。并設置ClassLoader,而ClassLoader的獲取是通過Atlas的成員函數getBundleClassLoader()來獲取,該函數須要傳遞一個參數,該參數就是相應插件的包名,也就是之前生成的插件信息列表的json中的pkgName

之后的開發就是正常程序的開發了。可是注意一點,就是宿主的入口Activity必須繼承頁面切換框架中的BaseActivity,而且不須要調用setContentView進行頁面設置。直接使用openPage函數打開Fragment就可以。插件中的Fragment必須繼承頁面切換框架中的BaseFragment,而且記得在宿主Application中調用 CoreConfig.init(this);進行該框架的初始化。

然后在宿主中調用。記得設置ClassLoader和開啟OpenAtlas的支持。Fragment的配置文件page.json 不須要拷到宿主中

CoreConfig.setIsOpenAtlas(true); ClassLoader bundleClassLoader = Atlas.getInstance().getBundleClassLoader("com.lizhangqu.fragment"); CoreConfig.setBundleClassLoader(bundleClassLoader); openPage("test", null, CoreAnim.none);

而插件中,不應該將該框架打包進去,僅僅是編譯的時候提供,詳細的適配工作見上一篇文章Android插件化開發之Atlas插件適配

最后,提供一個例子源代碼

http://download.csdn.net/detail/sbsujjbcy/9031679

posted on 2017-08-18 17:45 mthoutai 閱讀(...) 評論(...) 編輯 收藏

轉載于:https://www.cnblogs.com/mthoutai/p/7390983.html

總結

以上是生活随笔為你收集整理的Android插件化开发之解决OpenAtlas组件在宿主的注冊问题的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 蜜桃久久久aaaa成人网一区 | 奇米四色7777| 亚洲激情免费 | 福利影院在线 | 国产精品自拍片 | 天堂а√在线中文在线 | 久久婷婷综合色丁香五月 | 国产一区二区小视频 | 欧美a在线| 五月天av网站 | 二区欧美| aaa一级片| 毛茸茸成熟亚洲人 | 日韩大片一区二区 | 99re在线观看视频 | 天天做夜夜爽 | 黄色片成人 | 亚洲一区二区三区三州 | 久久亚洲av成人无码国产电影 | 亚洲涩视频 | 亚洲精选在线 | 天堂久久久久 | 午夜福利123 | 亚洲网站在线观看 | 精品亚洲成人 | 人妻体内射精一区二区三区 | 黑人爱爱视频 | 精品一区二区在线观看 | 97免费在线 | 精品不卡视频 | 亚洲影视中文字幕 | 九色91popny蝌蚪新疆 | 免费中文字幕在线观看 | brazzers欧美一区二区 | heyzo国产 | 亚洲成人网页 | 黄在线免费 | 亚洲a网站 | 波多野结衣在线一区 | 国产成人无码a区在线观看视频 | 嫩草视频国产 | 色图一区| 双性懵懂美人被强制调教 | 国产精品乱码一区 | 国产精品999| 好吊色免费视频 | 自拍视频一区 | 成人看的视频 | 国产精品一区二区免费视频 | 欧美色插| 在线观看国产 | 精品视频在线观看一区 | 欧美男人的天堂 | 国产日韩精品一区二区 | 人人爽在线 | 欧美精品成人久久 | 亚洲一区二区三区婷婷 | 嫩草国产在线 | 天天操 夜夜操 | 希岛婚前侵犯中文字幕在线 | 亚洲成年人 | 日产精品久久久久久久蜜臀 | 美女av一区二区 | 亚洲成人高清 | 一及黄色大片 | 樱花草av| 精品国产一区二区三 | 亚洲精品无amm毛片 国内一区二区三区 | 成年人理论片 | a级片在线视频 | 激情网婷婷 | 爽爽影院在线免费观看 | 国产片91 | 成人久久网站 | 日韩欧美国产高清 | 张柏芝亚洲一区二区三区 | 亚洲色图36p| 日韩一区二区三区精品 | 日韩毛片一区二区三区 | 久久久高潮 | 精品一区二区三区在线视频 | 日韩一区免费观看 | 亚洲青春草 | 久久久精品毛片 | 深夜视频在线观看免费 | 亚洲综合影院 | 激情五月深爱五月 | a√国产 | 精品人妻一区二区三区换脸明星 | 久久精品国产视频 | sm调教羞耻姿势图片 | 天堂久久久久久 | 亚洲av无码一区二区二三区软件 | 精品成人久久 | 九九热视频在线观看 | 97在线观看 | 人妻久久久一区二区三区 | 亚洲欧美日韩综合 | 欧美黄色视屏 |