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

Android開發(fā)之項目模塊化實踐教程

 更新時間:2017年09月11日 10:20:46   作者:adie  
這篇文章主要給大家介紹了關于Android開發(fā)之項目模塊化的相關資料,文中通過示例代碼給各位Android開發(fā)者們介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習下吧。

前言

大家應該都知道,項目模塊化是一個大命題,相信各團隊都有其合理方案。本文不求涵蓋各方面,僅從項目協(xié)同、開發(fā)調試、業(yè)務模塊服務調用與通知三個方面簡述一個可行方案。下面話不多說了,來一起看看詳細的介紹吧。

項目協(xié)同

項目協(xié)同,也叫多項目協(xié)同,是對多個相關且有并行情況項目的管理模式,它是幫助實現(xiàn)項目與企業(yè)戰(zhàn)略相結合的有效理論和工具[1]。本文的項目協(xié)同為Android主APP與其他業(yè)務模塊的協(xié)同。

假設我們的APP目錄如下,一個主app,多個modules。并假設我們的主app與各modules為多git repository。一個大APP多git repository管理是合理的。本文使用git repo[2]管理項目(可能有團隊使用git submodule[3],在此不推薦,其坑會很多)。

MApp --獨立git rep
 app
 modules
   module1 --獨立git rep
   module2 --獨立git rep
   module3 --獨立git rep
   ...

使用git repo,團隊早期可以不用玩一整套(git repo+gerrit),可以考慮只用repo去管理項目目錄,成員提交代碼還是繼續(xù)走git提交。

項目開發(fā)與調試

Android模塊化的主要目的是業(yè)務并行開發(fā),減少編譯時間,但又方便業(yè)務模塊與主App的調試。本文介紹如下方案。

MApp
 app --application
 modules
   module1
     demo --application
     lib --library
     settings.gradle

 settings.gradle
 settings_debug.gradle
 local.properties 

MApp的settings.gradle文件:

 boolean moduleDebug() {
  boolean ret = false
  try {
   Properties properties = new Properties()
   File file = file('local.properties')
   if (!file.exists()) {
    return false
   }
   properties.load(file.newDataInputStream())
   String debugStr = properties.getProperty("debug")
   if (debugStr != null && debugStr.length() > 0) {
    ret = debugStr.toBoolean()
   }
  } catch (Throwable throwable) {
   throwable.printStackTrace()
   ret = false
  }
  return ret
 }
 
 include ':app'
 if (moduleDebug()) {
  apply from: 'settings_debug.gradle'
 }

settings_debug.gradle文件:

//include 'module1'
//project(':module1').projectDir = new File('modules/module1/lib')
...其他業(yè)務模塊 

當module1在需求開發(fā)階段,完全不用考慮主APP,可以在Android Studio中以項目的方式打開。當module1需要和主APP跑流程時,我們只需要把MApp的local.properties的debug屬性改為true,并在settings_debug.gradle中打開module1即可。

業(yè)務模塊服務調用與通知

當APP模塊化后,通過Intent(Context packageContext, Class<?> cls)方式去啟動其他模塊的Activity就不太合理了。模塊化后,模塊里的Activity或其他組件對其他業(yè)務模塊最好透明。喚起Activity可以通過App Links[4]的方式,也就是我們常說的url router方式。App Links還可以玩deep link。Github上現(xiàn)在開源項目比如ARouter[5]就是App Link的應用。

當然,模塊之間的通信,不局限于啟動四大組件,還有服務調用與通知。這的服務不是Android系統(tǒng)的Service。舉個服務通知的例子,在電商APP中,店鋪詳情頁點收藏按鈕,可能要通知其他模塊,變更UI或數(shù)據(jù)。服務調用的例子,比如模塊喚起登陸注冊,登陸或注冊成功后,做相應業(yè)務處理。

服務調用,大部分團隊可能沒涉及到。服務調用可以用IOC,反射等注冊到服務注冊中心。本文選一個取巧的方案。利用Applicatin.getSystemService方法,讓Application作為ZoomKeep一樣成為服務注冊中心。只要各Serivce繼承同一個Interface,相應模塊間服務調用就不難了。

public class MApp extends Application {
 
 @Override
 public Object getSystemService(String name) {
  return super.getSystemService(name);
 }
}

服務通知,稍簡單,用廣播,EventBus[6]或其他方式都可。本文推薦EventBus,但其有缺點,如Event多起來后,很難找全觀察者和通知者之間的關系;一些簡單Event對象無法復用,所以最好二次開發(fā)。

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。

參考

[1] 項目協(xié)同: http://www.baike.com/wiki/%E...

[2] git repo:https://gerrit.googlesource.com/git-repo/

[3] git submodule: https://git-scm.com/book/zh/v1/Git...

[4] App Links:https://developer.android.com/training/app-links/deep-linking.html

[5] ARouter:https://github.com/alibaba/ARouter

[6] EventBus:https://github.com/greenrobot/EventBus

相關文章

  • Android實現(xiàn)動態(tài)高斯模糊背景效果

    Android實現(xiàn)動態(tài)高斯模糊背景效果

    在現(xiàn)代 Android UI 中,動態(tài)高斯模糊背景 常見于對話框或彈窗后面的模糊遮罩,相比靜態(tài)模糊圖,動態(tài)模糊可隨著內容滾動或變化實時更新,使界面更具層次感與沉浸感,所以本文給大家介紹了Android實現(xiàn)動態(tài)高斯模糊背景效果,需要的朋友可以參考下
    2025-04-04
  • 淺談Android Aidl 通訊機制

    淺談Android Aidl 通訊機制

    這篇文章主要介紹了淺談Android Aidl 通訊機制 的相關資料,需要的朋友可以參考下
    2016-04-04
  • Android 5.0以上Toast不顯示的解決方法

    Android 5.0以上Toast不顯示的解決方法

    最近在開發(fā)中我們經常會在適配5.0以后的機型遇到各種各樣的問題,其中有一個不大不小的問題就是:Toast不顯示問題,這篇文章就給大家總結了Android 5.0以上Toast不顯示的原因與解決方法,有需要的朋友們可以參考借鑒,下面來一起看看吧。
    2016-11-11
  • Android AIDL實現(xiàn)進程間通信探索

    Android AIDL實現(xiàn)進程間通信探索

    這篇文章主要為大家詳細介紹了Android AIDL實現(xiàn)進程間通信的相關資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-09-09
  • Android仿QQ列表滑動刪除操作

    Android仿QQ列表滑動刪除操作

    這篇文章主要為大家詳細介紹了Android仿QQ列表滑動刪除操作,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-08-08
  • android實現(xiàn)上滑屏幕隱藏底部菜單欄的示例

    android實現(xiàn)上滑屏幕隱藏底部菜單欄的示例

    這篇文章主要介紹了android實現(xiàn)上滑屏幕隱藏底部菜單欄的示例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-02-02
  • android實現(xiàn)動態(tài)顯示隱藏進度條

    android實現(xiàn)動態(tài)顯示隱藏進度條

    這篇文章主要為大家詳細介紹了android實現(xiàn)動態(tài)顯示隱藏進度條,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-08-08
  • Android實現(xiàn)語音播放與錄音功能

    Android實現(xiàn)語音播放與錄音功能

    這篇文章主要為大家詳細介紹了Android實現(xiàn)語音播放與錄音功能,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-07-07
  • Android實現(xiàn)九宮格抽獎

    Android實現(xiàn)九宮格抽獎

    這篇文章主要為大家詳細介紹了Android實現(xiàn)九宮格抽獎,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-06-06
  • 自定義視圖view的折線圖使用講解

    自定義視圖view的折線圖使用講解

    這篇文章主要介紹了自定義視圖view的折線圖使用講解,前面幾章講解了繪圖的一些基本用法,本章就來看看折線圖吧,需要的朋友可以參考下
    2023-04-04

最新評論

弥勒县| 巢湖市| 钟山县| 泉州市| 屏南县| 阳高县| 洛隆县| 兴山县| 岳普湖县| 乐东| 固镇县| 海林市| 滨海县| 莱芜市| 德清县| 渝中区| 新乡市| 专栏| 鹤岗市| 乐山市| 虎林市| 黄浦区| 上饶县| 北碚区| 南阳市| 华阴市| 基隆市| 荥经县| 宜阳县| 永川市| 巢湖市| 油尖旺区| 康乐县| 大关县| 建水县| 乐昌市| 双牌县| 油尖旺区| 开江县| 金山区| 县级市|