选择设计模式
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打造万能的适配器,觉得翔哥的封装的不错 打造万能的适配器。
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' }
开发过程中第三方开源库的抉择
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'
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
如果你不会写的控件,比较麻烦的,请您百度找开源库。
网友评论