安卓怎麼搭建框架?

今天在我的石墨文檔中看到以下內容的整理 2018.4.3號寫下的 

選擇設計模式

MVC

Model-View-Controller,經典模式,很容易理解,主要缺點有兩個:

View對Model的依賴,會導致View也包含了業務邏輯;

Controller會變得很厚很複雜。

 MVP

Model-View-Presenter,MVC的一個演變模式,將Controller換成了Presenter,主要爲了解決上述第一個缺點,將View和Model解耦,不過第二個缺點依然沒有解決。

MVVM

Model-View-ViewModel,是對MVP的一個優化模式,採用了雙向綁定:View的變動,自動反映在ViewModel,反之亦然。

我用的是MVP 你自己根據自己情況 項目選擇

基礎功能模塊:

日誌管理系統(LogManager)

不管哪個項目都需要自己的一套日誌管理,一是爲了生產調試時能更加高效的查看過濾日誌,二是爲了打包發佈的時候用開關控制日誌是否打印。

slf4j // https://mvnrepository.com/artifact/org.slf4j/slf4j-api

compile group: 'org.slf4j', name: 'slf4j-api', version: '1.7.25'

異常處理(crashManager)

 

作用:當程序遇見異常情況時我們能夠自定義異常處理,二是程序對不同的機型有不同的反應,那麼測試時候可能沒有發現但是我們可以把捕獲的crash上傳到服務器,便於異常收集和bug修復。

文件 crashhandler

 

utils(工具類)

根據你的項目需求來合理定製你的工具類,將會對你的項目開發速度有很大的提升(反饋,版本校驗更新你肯定能夠用到)

我的文件夾下有整理好的utils

 permission(權限管理系統)

https://github.com/yanzhenjie/AndPermission

使用的方法 請點擊鏈接https://github.com/yanzhenjie/AndPermission

 

邏輯功能模塊

1.封裝自己的application和baseActivity類,最大可能的節省代碼,加入mvp的思想來架構。

2.選擇自己喜歡的網絡請求框架並且適當合理的進行封裝,加快開發的效率。

3.針對帶有滾動控件嵌套有可能產生的滑動衝突,或者顯示不全我們優先自定義一下viewpager,listview,gridview等。

4.封裝listView或者recyclerView打造萬能的適配器,覺得翔哥的封裝的不錯[ 打造萬能的適配器](https://github.com/hongyangAndroid/baseAdapter)。

ForRecyclerView

compile 'com.zhy:base-rvadapter:3.0.3'

ForListView

compile 'com.zhy:base-adapter:3.0.3'

5.一般的網絡數據格式是json(我們就逗:普通數據json,刷卡交易數據xml),所以呢我json格式的用gson封裝一下,xml格式暫時用的是pull解析後bean對象封裝。

androidstudio 有插件可以使用Gsonforamt

gradle地址compile 'com.google.code.gson:gson:2.7'

6.數據庫的封裝,對數據苦要求不高的話可以用原生的簡單封裝一下curd就好了,要求高點的話那就用第三方的好了。

https://github.com/LitePalFramework/LitePal

dependencies { compile 'org.litepal.android:core:1.6.0' }

4.開發過程中第三方開源庫的抉擇

Glide:相比較UIL,glide可以支持gif和短視頻,支持與activity,fragment,application生命週期的聯動,支持 okhttp、Volley

dependencies { compile 'com.github.bumptech.glide:glide:3.5.2'

compile 'com.android.support:support-v4:22.0.0' }

picasso:http://square.github.io/picasso/

 

dependencies { compile 'com.squareup.picasso:picasso:2.5.1' }

 

網絡請求庫

okhttp:

okhttp是高性能的http庫,支持同步、異步,而且實現了spdy、http2、websocket協議,api很簡潔易用,和volley一樣實現了http協議的緩存。

對於Android Studio的用戶,可以選擇添加:

compile 'com.lzy.net:okhttputils:1.6.0'//可以單獨使用,不需要依賴下方的擴展包 compile 'com.lzy.net:okhttpserver:0.1.7'//擴展了下載管理和上傳管理,根據需要添加 compile 'com.lzy.net:okhttputils:+'//版本號使用 + 可以自動引用最新版 compile 'com.lzy.net:okhttpserver:+'//版本號使用 + 可以自動引用最新版

 

地址詳細理解:http://blog.csdn.net/hehe307/article/details/51733709

 

 

retrofit:

簡化了網絡請求流程,同時自己內部對OkHtttp客戶端做了封裝,同時2.x把之前1.x版本的部分不恰當職責都轉移給OkHttp了(例如Log,目前用OkHttp的Interceptor來實現)compile 'com.squareup.retrofit2:retrofit:2.0.0'

開發指南:https://github.com/hehonghui/android-tech-frontier/tree/master/issue-7/Retrofit%E5%BC%80%E5%8F%91%E6%8C%87%E5%8D%97

 

volley:

volley是一個簡單的異步http庫,僅此而已。缺點是不支持同步,這點會限制開發模式;不能post大數據,所以不適合用來上傳文件。

地址:http://blog.csdn.net/yanbober/article/details/45307099

事件總線庫

主要用來消息/事件的傳遞,卻能實現組建之間的解耦。

compile 'org.greenrobot:eventbus:3.0.0'

 

地址:https://github.com/greenrobot/EventBus

 

依賴注入庫

butterknife8.0: https://github.com/JakeWharton/butterknife

在任何項目中使用butterknife都是正確且沒有問題的. 非常輕量級的庫,原因是性能高節省代碼,而且不是你們所想的反射機制實現的。

 

簡單緩存

ASimpleCache:ASimpleCache 是一個爲android制定的 輕量級的 開源緩存框架。輕量到只有一個java文件(由十幾個類精簡而來)。

可緩存普通的字符串、JsonObject、JsonArray、Bitmap、Drawable、序列化的java對象,和 byte數據。普通的字符串、JsonObject、JsonArray、Bitmap、Drawable、序列化的java對象,和 byte數據。

 替換SharePreference當做配置文件

 可以緩存網絡請求數據,比如oschina的android客戶端可以緩存http請求的新聞內容,緩存時間假設爲1個小時,超時後自動失效,讓客戶端重新請求新的數據,減少客戶端流量,同時減少服務器併發量。

http://blog.csdn.net/u013278099/article/details/51485476

 

 

安卓開發常見錯誤:http://www.jianshu.com/p/c5db81cbc438

http://www.cnblogs.com/wangfeng520/p/6119531.html

 

主流開源庫的地址:https://www.cnblogs.com/yuxuan007/p/7110099.html

 

如果你不會寫的控件,比較麻煩的,請您百度找開源庫。

 

支付寶微信支付

http://p.codekk.com/detail/Android/tsy12321/PayAndroid

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章