Android應用框架設計


Android應用框架設計

1.主體框架

應用程序采用MVP架構,關於MVP框架的詳細介紹,自行搜索學習,關於MVP框架的選擇和實現,應用程序采用開源的MVP框架:https://github.com/sockeqwe/mosby

2.包結構

所有應用層程序,參考該目錄結構進行編寫,綠色部分是必須項,淺藍色部分為可選項,{appname}對應程序的名稱,例如開發一個微聊的應用程序,appname為weichat。

2.1.包作用說明

各個包,都具有它自身的一些職責,對應職責的代碼放到對應的包目錄下,下面將詳細解釋各個包的職責和它的詳細目錄結構。

  • module

模塊,主要實現對應功能模塊的視圖代碼和pensenter,由於pensenter和view強關聯,也和應用的功能強關聯,因此將他們放到同一目錄下。至於service,這里指的是android系統的service,這個包為可選項,如果該功能模塊需要后台服務功能,可以創建該包,並把對應功能代碼放到該目錄下,例如app升級模塊功能,需要后台下載。

  • serve

服務,一個app,存在一部分業務邏輯的復用,例如初始化服務,推出登陸服務等等,這類服務功能,可供多個模塊調用,並且實現對應的服務,需要調用dao、net甚至其他的服務。因此,針對app中的通用服務邏輯代碼,在該包下實現。作為服務,必須有它對應的接口申明和實現。

由於服務之前會互相依賴,因此服務對象必須以單例模式進行實現,避免形成遞歸創建。

  • system

系統,app中存在部分與系統相關的功能調用,並且存在復用的情況,為了便於統一管理,以及單元測試,將這部分代碼獨立出來。

  • net

網絡,由於app需要對接多套服務器環境,因此,net下根據服務器環境進行包划分,在http網絡請求方面,app使用了rxjava+retrofit2+okhttp,因此只需要封裝自己的攔截器(該部分代碼封裝在通用代碼庫中),對應的app接口代碼,聲明對應的接口url即可,詳細實現這里暫不涉及。

  • event
    事件,這里主要定義eventbus使用的消息事件對象,便於管理整個app的消息事件,對應的消息事件處理,將分布到各個功能模塊,或者application中。

  • data

數據,這里包含app的持久化信息,以及常量信息,着重說明一下這里的dao,該部分封裝了數據庫的訪問,采用ormlite框架進行封裝,app開發者只需要實現自己的DBManager,管理對應的數據包版本號即可實現對應的數據升級管理。

  • receiver
    廣播接收器,這里就是指的android系統的廣播接收器,例如在這里面定義接收推送信息的廣播接收器,接收通知欄消息的廣播接收器等等。

  • third
    第三方集成封裝,例如關於高德地圖或者百度地圖的二次封裝等。

  • contentprovider
    對應android系統contentprovider,對其他app提供對應的數據服務。

3.開源技術框架選用

目前,android開發社區關於app應用開發的各個層面,都存在一些成熟可靠的實現方面,采用合適的技術方案,有助於提高開發效率,改善代碼質量,便於維護等等一系列優點,我們不閉門造車,自己封裝的往往也沒有開源項目的精良。

3.1.數據庫

ormlite,ORM的概念在服務器領域的使用已經是稀松平常,應用到android數據開發,有利於簡化數據庫訪問邏輯,降低開發難度,提高代碼的可維護性。在這個基礎上,我們在數據庫訪問增加數據緩存層,提高數據庫訪問效率,降低耗電(訪問硬盤比訪問內存耗電)。關於緩存的主要實現策略,一個某個緩存的數據發生了變化,就清楚該緩存數據,下次讀取時,重新從硬盤中讀取,然后緩存,簡化緩存管理邏輯。

3.2.http網絡訪問

rxjava+retrofit2+okhttp,它們的優點就不解釋了,反正就選他們了,當然rxjava不僅僅用於網絡訪問,還運用於app中的邏輯鏈式調用,線程切換處理等,強大到你難以想象。

3.3.單元測試

robolectric+powermock+mockito+junit,目前android單元測試,這是已知最靠譜的方案。

3.4.事件處理

eventbus,用於處理應用內之間的消息傳遞,當然還存在其他的處理方案,我們覺得這種方式比較合適。

3.5.內存泄露檢測

leakcanary,作為一個有追求的程序員,怎么能容忍內存泄露的存在,改善應用內存泄露情況,就靠它了。

3.6.布局文件依賴注入

butterknife,擺脫findViewById的厄運。當然,在使用androidstudio時,不要忘記了安裝Zelezny這個插件,這樣在開發過程中,可以更加的偷懶了。






免責聲明!

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



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