安卓实战常用工具和框架

801 阅读5分钟

1.AndroidUtilCode (github.com/Blankj/Andr…

一个强大易用的安卓工具类库,它合理地封装了安卓开发中常用的函数,具有完善的 Demo 和单元测试,利用其封装好的 APIs 可以大大提高开发效率,如今它主要包括两部分模块,其一是主工具类模块:utilcode,其中的工具类是开发中常用到的;其二是子工具类模块:subutil,它包含的工具类并不是很常用,它的出现是为了防止主工具类的臃肿。

代码路径:AndroidUtilCode/lib/utilcode/src/main/java/com/blankj/utilcode/util

2.MVP框架

GitHub上有介绍MVP框架的,但是传统MVP类和接口太多,我给一个自己用过的:

 直接在gradle中添加依赖compile 'com.jude:beam:3.0.1'

  介绍文章:www.jianshu.com/p/ed2aa9546…

3.网络请求

比较一下Okhttp和Retrofit、Volley的优缺点——

Okhttp

优点:支持http请求,https请求、支持同步异步。 支持文件下载、加载图片、基于Http的文件上传。 使用的是HttpURLConnection,不要担心android版本的变换。使用GZIP压缩下载内容,且压缩操作对用户是透明的。

缺点:callback回来是在线程里面, 不能刷新UI,需要我们手动处理。 封装比较麻烦。

官方地址github.com/square/okht…

英文不好的同学可以看看这篇文章www.jianshu.com/p/5bc65d66a…

Retrofit

优点:可以配置不同HTTP client来实现网络请求,如okhttp、httpclient等请求的方法参数注解都可以定制 支持同步、异步和RxJava 超级解耦、rest风格,更安全和高效 可以配置不同的反序列化工具来解析数据,如json、xml等 使用非常方便灵活 框架使用了很多设计模式。

缺点:不能接触序列化实体和响应数据 执行的机制太严格 使用转换器比较低效 只能支持简单自定义参数类型

github.com/square/retr…

Volley

github.com/mcxiaoke/an…

优点:内部提供4个网络请求线程及1个缓存调度线程辅助请求,效率高,遵循HTTP标准协议处理缓存相关策略,请求有优先级概念,支持不同类型请求的自定义扩展,支持取消已发出的请求,提供接口给用户自己实现网络请求层

缺点:对大文件下载 Volley的表现非常糟糕。 只支持http请求。

总结:Retrofit 默认是基于 OkHttp 而做的封装,所以这两者没有可比性,肯定首选 Retrofit,但是OKHTTP的知名度高,公司用的比较多,所以了解一下是有必要的。至于Volley,不用下载大文件的软件可以使用,封装的比这两个都好

4.图片加载框架

Picasso
github.com/square/pica…
Fresco
github.com/facebook/fr…
Glide
github.com/bumptech/gl…

总结:Glide能做到Picasso所能做到的一切,Picasso 比 Glide 体积小很多且图像质量比 Glide 高,但Glide 的速度比 Picasso 更快,Glide 的长处是处理大型的图片流,如 gif、video,如果要制作视频类应用,Glide 当为首选。Fresco 可以说是综合了之前图片加载库的优点,但它的包很大,用法比较复杂,API不够简洁。 Fresco 在图片较多的应用中更能凸显其价值,如果应用没有太多图片需求,还是不推荐使用 Fresco,Glide基本就能满足你的需求

5.数据库

Ormlite
github.com/j256/ormlit…

这个好像不再更新了,也没用过,中文文档不好找。使用时把jar包复制到as的libs文件夹下,并且引用jar包即可

LitePal
github.com/LitePalFram…

郭大神开源的数据库框架,他的博客也比较详细的介绍了其用法:blog.csdn.net/sinyu890807…

手机需要root再研究,慢慢啃吧

greenDAO
github.com/greenrobot/…

优点包括以下几点:1.存取速度快; 2.支持数据库加密; 3.轻量级; 4.激活实体; 5.支持缓存; 6.代码自动生成。

集成方法:添加依赖 compile ‘org.greenrobot:greendao:3.2.0’

这个效率很高,插入和更新的速度是sqlite的2倍,加载实体的速度是ormlite的4.5倍,目前git上一直在做更新维护,start数量9000多。

6.异步分发

EventBus
github.com/greenrobot/…

介绍:传统的事件传递方式包括:Handler、BroadcastReceiver、Interface回调,相比之下EventBus的有点是代码简洁,使用简单,并将事件发布和订阅充分解耦。EventBus是发布、订阅的轻量级事件总线框架,基于观察者模式的实现的线程通信框架。弄懂什么是观察者模式,就打开了新世界的大门,观察者模式介绍:juejin.cn/post/684490…

Rxjava
github.com/ReactiveX/R…

7.推送消息框架

友盟推送

developer.umeng.com/docs/67966/…

简单易用,5分钟就能做出一个demo,上面是官方安卓集成文档,支持华为、小米、OPPO、vivo等大部分手机厂商

8.其他常用框架

Butterknife
github.com/JakeWharton…

介绍:使用简单,基本没有性能损失,免去findViewById的繁琐操作,配合插件Android ButterKnife Zelezny食用。如果你用的是kotlin开发,这个就不需要了。

几行代码集成二维码扫描

github.com/yipianfengy…

介绍:支持对图片Bitmap的扫描功能,支持对UI的定制化操作,支持对条形码的扫描功能,支持生成二维码操作,支持控制闪光灯开关,非常简单

日志打印库Logger
github.com/orhanobut/l…

集成:implementation 'com.orhanobut:logger:2.2.0'

介绍:先初始化Logger.addLogAdapter(new AndroidLogAdapter());

然后使用

Logger.d("debug"); 

Logger.e("error"); 

Logger.w("warning");

Logger.v("verbose"); 

Logger.i("information");

Logger.wtf("What a Terrible Failure");

支持xml、json打印

Logger.json(JSON_CONTENT); 

Logger.xml(XML_CONTENT);

LIST、SET、MAP也可以直接打印Logger.d(MAP);        

组件化开发ARouter
github.com/alibaba/ARo…

介绍:阿里做的组件化开发框架,适合大项目,Activity之间用标准URL跳转

BannerViewPager

gank.io/post/5e9327…

最好用的Banner。简单、高效,无缝衔接Kotlin。一行代码实现循环轮播,一屏三页任意变,指示器样式任你挑。

未完待续——