安卓怎么搭建框架?

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

猜你喜欢

转载自blog.csdn.net/weixin_39706415/article/details/100972549
今日推荐