今天在我的石墨文檔中看到以下內容的整理 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