Android开源库选择

事件总线/消息通信 EventBus VS Otto VS RxJava RxAndroid

  1. EventBus支持异步线程场景,Otto主要在主线程中处理
  2. EventBus采用反射的方式对整个注册的类的所有方法进行扫描来完成注册,3.0后支持注解以及在编译期扫描,性能有所提升。Otto才有注解方式
  3. 两个框架均缓存所有注册并有可用性的检测,同时可以移除注册。

EventBus官网性能对比

此外 Otto已经被square废弃,取而代之的是RxJava RxAndroid

依赖注入 Butter Knife VS RoboGuice VS Android Annotation VS Dagger2

Butter Knife : 强大的【View绑定和Click事件】处理功能,简化代码,使用简单。可作为Dagger的补充

Dagger2:强大的【对象的管理】,其目的是为了【降低程序耦合】,但使用繁琐

Butter Knife、Dagger2 均使用apt代码自动生成技术,其注解是停留在编译时,完全不影响性能

RoboGuice:Google出品,采用了反射机制实现,view注入,service注入,resource注入都是很简单的但是他的注入需要继承自Robo**组件,例如RoboActivity,RoboService,RoboIntentService,RoboContentProvide

Android Annotation:强大,但【据说】编译会产生子类,会产生大量的方法数,增加包Size

路由框架 ARouter

ARouter优势:

  • 支持直接解析标准URL进行跳转,并自动注入参数到目标页面中
  • 支持多模块工程使用
  • 支持添加多个拦截器,自定义拦截顺序
  • 支持依赖注入,可单独作为依赖注入框架使用
  • 支持InstantRun
  • 支持MultiDex(Google方案)
  • 映射关系按组分类、多级管理,按需初始化
  • 支持用户指定全局降级与局部降级策略
  • 页面、拦截器、服务等组件均自动注册到框架
  • 支持多种方式配置转场动画
  • 支持获取Fragment
  • 完全支持Kotlin以及混编

图片 Glide VS Picaso VS Fresco VS Universal-Image-Loader

这里写图片描述

数据库 GreenDao VS Realm VS OrmLite VS LitePal VS DBFlow

这里写图片描述

GreenDao : 对象关系映射(ORM)工具,提供了对象到关系型数据库SQLite的相应接口。优点:1.存取速度快; 2.支持数据库加密; 3.轻量级; 4.激活实体; 5.支持缓存; 6.代码自动生成

Realm:替代sqlite的一种解决方案,它有一套自己的数据库存储引擎,比sqlite更轻量级,拥有更快的速度,并且具有很多现代数据库的特性,比如支持JSON,流式api,数据变更通知,自动数据同步,简单身份验证,访问控制,事件处理,最重要的是跨平台,目前已有Java,Objective C,Swift,React-Native,Xamarin这五种实现。基于反射,效率略低,缺少中文翻译文档

ORMLite:提供了一些轻量级持久化Java对象到SQL数据库,同时也避免了复杂性和更多的标准的ORM包的开销功能。它支持的SQL数据库使用JDBC的数量,还支持原生的Android操作系统数据库API调用sqlite。

LitePal:对象关系映射(ORM)模型,操作SQLite。

DBFlow:综合了 ActiveAndroid, Schematic, Ollie,Sprinkles 等库的优点。同时不是基于反射,所以性能也是非常高,效率紧跟greenDAO其后。基于注解,使用apt技术,在编译过程中生成操作类。无缝支持多个数据库,使用annotation processing提高速度,ModelContainer类库可以直接解析像JSON这样的数据,增加灵活性的丰富接口。优点:1.存取速度快; 2.支持数据库加密; 3.轻量级; 4.激活实体; 5.支持缓存; 6.代码自动生成

网络库 Retrofit + OkHttp

OkHttp功能:
- 一般的get请求
- 一般的post请求
- 基于Http的文件上传
- 文件下载
- 加载图片
- 支持请求回调,直接返回对象、对象集合
- 支持session的保持
高效性:
- 支持 SPDY ,共享同一个Socket来处理同一个服务器的所有请求
- 如果SPDY不可用,则通过连接池来减少请求延时
- 无缝的支持GZIP来减少数据流量
- 缓存响应数据来减少重复的网络请求

Retrofit功能:

  • 基于OkHttp & 遵循Restful API设计风格
  • 通过注解配置网络请求参数
  • 支持同步 & 异步 网络请求
  • 支持多种数据的解析 & 序列化格式(Gson Json XML Protobuf)
  • 提供对RxJava的支持
    优点:
  • 功能强大,支持同步 & 异步、支持多种数据的解析 & 序列化格式、支持RxJava
  • 简洁易用,通过注解配置网络请求参数,采用大量设计模式简化使用
  • 可扩展性好,功能模块高度封装、解耦彻底,如自定义Converters等等

JSON解析 Gson VS FastJson VS Jackson VS LoganSquare

[Json框架选型]Android开发中应该使用哪一种主流json框架?

Android 中Json解析的几种框架(Gson、Jackson、FastJson、LoganSquare)使用与对比

fastjson这么快老外为啥还是热衷 jackson?

热修复

特点:

  • 无需重新发版,实时高效热修复
  • 用户无感知修复,无需下载新的应用,代价小
  • 修复成功率高,把损失降到最低

Native系
代表有阿里的Dexposed、AndFix、Hotfix、Sophix。

Java系
代表有Qzone的超级补丁、大众点评的nuwa、百度金融的rocooFix, 饿了么的amigo、美团的robust以及微信的Tinker。

Android 热修复专题:支付宝、淘宝、微信、QQ空间、饿了么、美丽说蘑菇街、美团大众点评方案集合

这里写图片描述

2017年Android百大框架排行榜

猜你喜欢

转载自blog.csdn.net/xiaoru5127/article/details/80897484