安卓如何有效搭建框架

作者: 不正经的创作者 | 来源:发表于2020-05-29 16:26 被阅读0次

    选择设计模式

    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'

    开发指南: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

    相关文章

      网友评论

        本文标题:安卓如何有效搭建框架

        本文链接:https://www.haomeiwen.com/subject/oxqfzhtx.html