关于架构设计的分享,本期深海会和大家分享探讨一些技术选型的问题:
语言选型:
推荐Kotlin,原因有三:
1:代码量少,体积小,效率高。同样需求的代码,Java写可能需要100行,用Kotlin写可能只需要80行。
2:语言与场景契合性好。比如单例的object关键字,数据模型(Bean)的data class,Layout控件直接引入id进行操作,免去了findViewById的步骤。并且以上举例,在场景契合的同时还免去了很多代码,间接提升了效率,减小了代码体积。
3:安全性好。语言自区分"可为空"和“不可为空”的对象类型声明,极其简洁的问号判空。避免了很多空指针异常。
网络请求框架选型:
这个具体要看项目中网络请求相关业务的复杂度,以及架构设计的侧重点。
如果业务复杂度较高,或者架构设计侧重解耦的话,推荐使用RxJava+Retrofit
如果业务复杂度较低,或者追求代码简洁的话,推荐使用OkGo、OkHttpUtils(廖子尧)、OkHttpUtils(鸿洋),OkHttpUtils(根据需求定义自行封装)
不推荐 Volley
图片加载框架选型:
首推 Glide ,其他推荐优先级递减: Picasso(缓存体积较大)、ImageLoader(配置较多)、Fresco(体积较大)
数据存储框架选型:
缓存框架:MMKV 存取速度快,体积小。
数据库框架: GreenDAO 使用简单。
响应式框架推荐:
推荐RxJava/RxAndroid,EventBus。
相对来说这两个框架都会增加项目的熟悉成本,只要不是特别复杂的逻辑,深海还是建议使用有组织性的接口回调
线程切换框架:
推荐ArchTaskExecutor 其次是RxJava 再其次是 AsyncTask
状态栏管理框架:
推荐:ImmersionBar 使用简单方便
调优框架:
内存优化推荐 LeakCanary
奔溃报告推荐 Bugly
Json解析框架:
首推Gson,其次推荐原生JsonObject