总结之前项目的框架:MVP+Okhttp+Gson+Glide+DBFlow后期会修改不合理的地方

API层: 1

图片框架 2

数据库层: 2

Log层: 2

开发插件 2

UI层: 3

API层:(Retrofit + Okhttp + RxJava&RxAndroid+Gson)

Retrofit

Square公司良心出品。

目前最为流行框架之一。

基于接口、反射实现api定义,并且动态代理。

插件可配置:

网络请求客户端可以配置,2.0之后默认使用Okhttp

反序列化插件配置,几乎可以配置绝大部分主流的序列化和反序列化工具。

….详见github上文档说明。

 

Okhttp

Square公司良心出品。

Android 2.3之前采用Httpclient实现,2.3及以后用URLconnection实现,并且在Android6.0中已经删除了httpclient的相关方法。

Android在某次会议上推荐使用Okhttp

相比VolleyOkhttp可以实现文件下载。

Retrofit2.0之后,默认配置的网络客户端为Okhttp

专门配套有Okio,用于输入输出流这一块。

RxJava(RxAndroid)

Square公司良心出品。

其优点,不能言语,但能感受到其功能强大,并且也变得越来越流行,并不仅仅用于Android上。

 

Gson

Google自家产品。

可配置在Retrofit中,使用的开发者较多,因此利于后续的问题排查。

也可尝试配置LoganSquare,此工具速度目前最快,但也最不了解。

 

 

 

 

 

 

 

 

 

 

 

Okhttp+gson

 

 

图片框架

Glide

Google2014年在泰国的开发者峰会上推荐了此组件。

其优点相比universal imageloader来讲,也是显而易见的。

Picasso的详细对比可见下文:

http://inthecheesefactory.com/blog/get-to-know-glide-recommended-by-google/en

其中包含了一些需要注意的点,比如图片bitmap.config的设置,Glide缓存图片的设置等,否则可能造成Glide缓存同个图片不同大小的副本。

Glide并且能够加载gif,而Picasso不能。

GlideAcitivity/Fragment生命周期联动。

Glide可以配置动画,而Picasso只有一个淡入动画。

体积大小对比:Picasso 118kb(480 methods)Glide 430kb2678 methods

 

 

数据库层:

DBFlow

DBFlow,效率仅次于GreenDao(纯原生数据库实现方式,并实现了缓存机制),但实用性(DBFlow在开发上采用了注解)比GreenDao更简单。

Github地址:https://github.com/agrosner/DBFlow

https://github.com/Raizlabs/DBFlow

GreenDao在效率上的对比:在简单操作上,GreenDao表现的更好,但是在复杂操作上,DBFlow表现的更好,总体来讲,DBFlow从效率和使用上是值得选择的。

GitHub地址

https://github.com/Raizlabs/AndroidDatabaseLibraryComparison

 

 

 

Log层:

Logger

更为直观的本地日志查看第三方工具。

github地址:https://github.com/orhanobut/logger

 

 

开发插件

Lambda

JDK8中已可使用Lambda

Android中使用retrolambda插件使用lambda表达式。

GitHub地址:https://github.com/evant/gradle-retrolambda

 

GsonFormat

根据Gson字符串生成相应POJO对象。

 

….

UI层:

ButterKnife

UI等注解工具,解放UIfindViewByIdsetOnClicktListener

GitHub地址:https://github.com/JakeWharton/butterknife

这个开源库可以让我们从大量的findViewById()setonclicktListener()解放出来,其对性能的影响微乎其微(查看过Butter Knife的源码,其自定义注解的实现都是限定为RetentionPolicy.CLASS,也就是到编译出.class文件为止有效,在运行时不额外消耗性能,其是通过java注解自动生成java代码的形式来完成工作),其也有一个明显的缺点,那就是代码的可读性差一些,但了解了之后,上手也很快,如果不熟悉,可以考虑对一些静态化界面(变动不多的)采用。

 

整体方案

犹豫方案1

MVP

 

犹豫方案2

MVVM(databing)

 

 

 

 

 

 

 

 

 

 

 

 

 

黄仁黔新增的方案

:适配

1.支持各种屏幕尺寸使用wrap_content、match_parent、weight

2.使用相对布局,禁用绝对布局

3.使用尺寸限定符,res/layout/main.xml,单面板(默认)布局,res/layout-large/main.xml,双面板布局(7寸分界)

4.使用最小宽度限定符,res/layout/main.xml,单面板(默认)布局,res/layout-sw600dp/main.xml,双面板布局

5.使用自动拉伸位图,  .9.png

6.使用非密度制约像素,使用 dp(而非 px)指定两个视图间的间距,使用 sp 指定文字大小                                                                                              

7.提供备用位图

相同类型的布局文件

 

 

 

:二维码

 

 

 

 

三:左滑关闭页面

 

 

 

 

 

 

 

 

 

:工具类

 

:自定义view

 

:全局异常捕获

 

 

compile 'cat.ereza:customactivityoncrash:1.4.0'// 异常捕捉页面

 

CustomErrorActivity

 

:build.gradle

 

 

 

 下载地址:点击打开链接

 

你可能感兴趣的:(总结之前项目的框架:MVP+Okhttp+Gson+Glide+DBFlow后期会修改不合理的地方)