最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Android筆記之:App模塊化及工程擴(kuò)展的應(yīng)用

 更新時(shí)間:2013年04月28日 09:28:24   作者:  
這篇文章是android開發(fā)人員的必備知識(shí),是我特別為大家整理和總結(jié)的,不求完美,但是有用

1.需求
    無(wú)論是在.net還是java平臺(tái),合理的分層架構(gòu)是最普遍的模塊化思路之一。
    dll,jar文件無(wú)不風(fēng)靡盛行,無(wú)處不在。
    一天,tx團(tuán)隊(duì)和我說(shuō),我們現(xiàn)在要做android上做三個(gè)論壇的客戶端,一個(gè)是新聞?wù)搲粋€(gè)是文學(xué)論壇,一個(gè)是音樂論壇。除了數(shù)據(jù),界面和很少的模塊不一樣,其他的都一摸一樣。
    jar是我第一刻就想到的東西,但是共用的jar文件無(wú)法方便的共享資源或者覆蓋資源。
    而我們也不會(huì)傻傻的單獨(dú)做三個(gè)客戶端的吧,也不會(huì)傻傻的做3個(gè)客戶端再傻傻的copy3份,依次修改吧。

2.問題
   在Android工程中如何開發(fā)一個(gè)共用Framework,能共用資源,代碼,但是也能擴(kuò)展? 

3.使用硬編碼判斷
   有人提出了一種方案, 在代碼里面判斷:

復(fù)制代碼 代碼如下:

if(新聞?wù)搲? {
   //加載新聞?wù)搲馁Y源
   //執(zhí)行新聞?wù)搲拇a
   //顯示新聞?wù)搲男Ч?
}else if(文學(xué)論壇) {
   //加載文學(xué)論壇的資源
   //執(zhí)行文學(xué)論壇的代碼
   //顯示文學(xué)論壇的效果
}else if(音樂論壇) {
   //加載音樂論壇的資源
   //執(zhí)行音樂論壇的代碼
   //顯示音樂論壇的效果
}
PS:這是一種很無(wú)奈的辦法,代碼丑陋,擴(kuò)展性差,有沒有更好的辦法呢?

4.使用Android Library分離工程
    Android Library提供了一個(gè)類似于其他平臺(tái)的庫(kù)的概念,這個(gè)庫(kù)不僅能公用代碼,還能共用資源,還能覆寫資源。
    Android Library是以工程的顆粒來(lái)復(fù)用,引用它的工程,其實(shí)就是引用它的代碼,然后生成R.java和主工程需要的資源,而剔除Library中被覆蓋的資源。其中Library中的AndroidManifest.xml不能復(fù)用,也就是說(shuō)主工程必須重新定義AndroidManifest.xml,這個(gè)也很容易理解,AndroidManifest.xml本來(lái)就是工程的一個(gè)配置文件,一般來(lái)說(shuō)不具備共用的庫(kù)的通用性。
    步驟如下:
    第一步:新建Android工程common。
    第二步:右鍵common,選擇Properties,在Android標(biāo)簽頁(yè),選中"Is Library" ,如下圖。
 
    第三步: 新建主工程新聞?wù)搲痶ianxianews。
    第四步: 右鍵tianxianews,選擇Properties,在Android標(biāo)簽頁(yè),點(diǎn)擊Add,選中common。如下圖。
    查看最后的工程結(jié)構(gòu):
    此時(shí)此刻,common工程天衣無(wú)縫成了tianxianews工程的一部分。
    我們展開tianxianews工程的gen目錄:
    
    eclipse為了生成了兩個(gè)R.java,一個(gè)是common工程的,一個(gè)tianxianews工程的,但是內(nèi)容是一摸一樣的,這樣做的好處是:R.java里面的內(nèi)容包括兩個(gè)工程資源,第一,tianxianews工程通過R.java能調(diào)用到common工程的資源;第二,如果有覆寫的資源,生成apk的時(shí)候,tianxianews工程覆蓋common工程的資源,因?yàn)閮蓚€(gè)R.java內(nèi)容一樣,common代碼調(diào)用的R.java中的資源,實(shí)際上調(diào)用的是tianxianews資源,這個(gè)特性類似如面向?qū)ο蟮睦^承的概念。
    我們還可以另外新建tianxiamusic,tianxialiterature工程,都引用common,這樣我們?nèi)齻€(gè)工程就能共用common,這樣我們就可以只在common一個(gè)工程中開發(fā)了。
    在這里,具體的使用步驟我沒有截圖出來(lái),主要是沒什么技術(shù),也沒什么好說(shuō)的,就是兩個(gè)字:覆蓋。 

5.小結(jié)
    Android Library為Android模塊化和工程擴(kuò)展提供了一個(gè)很好的工具或者方式。隨著項(xiàng)目的增大,資源的共享,模塊化和擴(kuò)展的這種需求更是日益凸顯,它不僅去掉了代碼的丑陋,而且減少了開發(fā)量,帶來(lái)的益處不少。同時(shí)由此我們也可以看出來(lái)Android的不成熟,他們?yōu)槲覀兇笮凸こ烫峁┑姆桨高€是太少,這可能也有源自手機(jī)平臺(tái)本身的局限性吧,我們期待Android市場(chǎng)走向更強(qiáng)大,技術(shù)走向更強(qiáng)悍。

相關(guān)文章

  • Kotlin類的繼承實(shí)現(xiàn)詳細(xì)介紹

    Kotlin類的繼承實(shí)現(xiàn)詳細(xì)介紹

    這篇文章主要介紹了Kotlin類的繼承,在Java中類的繼承默認(rèn)是繼承父類的方法和參數(shù)的,但是在kotlin中默認(rèn)是不繼承的,那么我們接下來(lái)來(lái)驗(yàn)證
    2022-09-09
  • Android定時(shí)器實(shí)現(xiàn)的幾種方式整理及removeCallbacks失效問題解決

    Android定時(shí)器實(shí)現(xiàn)的幾種方式整理及removeCallbacks失效問題解決

    本文為大家詳細(xì)介紹下Android 定時(shí)器實(shí)現(xiàn)的幾種方式:Handler + Runnable、Timer的方式、Handle與線程的sleep(long )方法和removeCallbacks失效問題如何解決
    2013-06-06
  • Android離線緩存的實(shí)例代碼

    Android離線緩存的實(shí)例代碼

    android很多時(shí)候需要考慮緩存的問題,本篇文章主要介紹了Android離線緩存的實(shí)例代碼,具有一定的參考價(jià)值,有興趣的可以了解一下。
    2017-01-01
  • Android媒體開發(fā)之音樂播放器

    Android媒體開發(fā)之音樂播放器

    這篇文章主要為大家詳細(xì)介紹了Android媒體開發(fā)之音樂播放器,播放SD卡中的音樂,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-12-12
  • Android開發(fā)中的單例模式應(yīng)用詳解

    Android開發(fā)中的單例模式應(yīng)用詳解

    這篇文章主要介紹了Android開發(fā)中的單例模式應(yīng)用,結(jié)合實(shí)例形式詳細(xì)分析了Android開發(fā)中常用單例模式的實(shí)現(xiàn)與使用方法,需要的朋友可以參考下
    2018-01-01
  • android?viewflipper實(shí)現(xiàn)左右滑動(dòng)切換顯示圖片

    android?viewflipper實(shí)現(xiàn)左右滑動(dòng)切換顯示圖片

    這篇文章主要為大家詳細(xì)介紹了android?viewflipper實(shí)現(xiàn)左右滑動(dòng)切換顯示圖片,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-05-05
  • Android APP數(shù)字解鎖實(shí)例詳解

    Android APP數(shù)字解鎖實(shí)例詳解

    這篇文章主要介紹了Android 應(yīng)用數(shù)字解鎖實(shí)例詳解的相關(guān)資料,這里附有實(shí)例代碼及實(shí)現(xiàn)效果圖,需要的朋友可以參考下
    2016-11-11
  • Android開發(fā)實(shí)現(xiàn)自定義新聞加載頁(yè)面功能實(shí)例

    Android開發(fā)實(shí)現(xiàn)自定義新聞加載頁(yè)面功能實(shí)例

    這篇文章主要介紹了Android開發(fā)實(shí)現(xiàn)自定義新聞加載頁(yè)面功能,結(jié)合具體實(shí)例形式分析了Android界面加載及頁(yè)面布局相關(guān)操作技巧,需要的朋友可以參考下
    2017-10-10
  • Android基于OpenCV實(shí)現(xiàn)非真實(shí)渲染

    Android基于OpenCV實(shí)現(xiàn)非真實(shí)渲染

    非真實(shí)感渲染(Non Photorealistic Rendering,簡(jiǎn)稱NPR),是指利用計(jì)算機(jī)模擬各種視覺藝術(shù)的繪制風(fēng)格,也用于發(fā)展新的繪制風(fēng)格。比如模擬中國(guó)畫、水彩、素描、油畫、版畫等藝術(shù)風(fēng)格。本文將講解Android基于OpenCV實(shí)現(xiàn)非真實(shí)渲染的方法
    2021-06-06
  • Android Camera是否支持變焦的判斷方法總結(jié)

    Android Camera是否支持變焦的判斷方法總結(jié)

    這篇文章主要介紹了Android Camera是否支持變焦的判斷方法總結(jié),本文總結(jié)了調(diào)節(jié)攝像頭焦距編程中遇到的一些問題和解決方法,需要的朋友可以參考下
    2015-04-04

最新評(píng)論

九寨沟县| 平罗县| 江北区| 柘荣县| 阿拉善盟| 江口县| 烟台市| 石泉县| 曲麻莱县| 合作市| 和林格尔县| 建阳市| 延川县| 抚宁县| 老河口市| 深圳市| 长治市| 满城县| 湖南省| 白城市| 大余县| 察雅县| 诏安县| 凤冈县| 潞城市| 大厂| 东光县| 托克逊县| 德州市| 广灵县| 雷波县| 西盟| 龙川县| 苏尼特左旗| 吉木乃县| 六盘水市| 深圳市| 英吉沙县| 晋宁县| 廉江市| 崇义县|