给朋友的Android实用轮子

一些比较好用的轮子

语言

相对于Java,kotlin现在也相对成熟了,掌握kotlin对目前来说还是很重要的,毕竟更现代化的语言,而且开发速度也会有所提升。

混合开发

React Native

Flutter

官方组件

Android官方JetPack

constraintLayout,挺好的ViewGroup

Android KTX ,kotlin官方扩展包

Android Lifecycles生命周期管理

LiveData,生命周期限制下的动态数据更新

Navigation, Fragment之前的跳转,替代原有的replace和add方法,限制推崇单Activity,多Fragment模式, 所以之前比较流行的路由ARouter其实并不好用,但旧项目依然可以通过ARouter来改造。

Room和Paging是数据库的操作,目前需求速度和更多操作的话,还是选择GreenDao比较好。

ViewModel, 类似于前端React中的state概念,在生命周期允许的条件下保存数据,这个框架是很核心的,结合了DI,和Android生命周期管理,本身的设计结构利用了Fragment的可空白性和周期包含性,很好的解决了Android的各种内存泄漏和数据同步问题。可以参考QQ音乐的ViewModel分析,讲的还算比较深入。

WorkManager,做后台闹钟等还算很好用的,本身没什么黑科技,在于兼容性很强。至于保活的黑科技,目前新版本基本上是没有实际效果了,Android每一代更新对后台的限制都是大动作。包括Q版本的后台唤起界面限制。全家桶保活也不大可能了,能通知到位是最好的结果。

其他的Jetpack组件应用于特殊条件

网络组件

OKHTTP, 已经是官方组件,但还需要引入,旧版本系统没有

Retrofit, Restful API方式,动态代理,声明式接口方法,很现代化的方式,而且一旦使用,很难瞧得上旧的方式来进行HTTP请求。

RxKotlin, RxJava, 很适合数据流的方式,但是Rx学习曲线比较陡峭,先要学习函数式(声明式)编程的思想才能更好的学习,对比学习的SQL语言,Rx就是这样的声明式语言框架,将来在kotlin中也会发现很多单元测试方法都是声明式的。
Rx也很重要,不单单是在网络请求,类似的框架在前端应用非常广泛,我们所说的响应式最强的我觉得还是Rx。

高级组件

koin,Kotlin依赖注入,kotlin版本的Guice, Dragger2虽然性能好,但毕竟实现来讲很复杂,学习曲线比较高,而且要求系统级别的操作。koin是我接触过得,最好用的依赖注入

val dataModule = module {

    single { LoggerImpl() as Logger }

    single { HttpLog(get()) }

    single { CookiesManager(get()) }

    single { UrlConfigImpl() as UrlConfig }

    single { OkhttpWrapper(get(), get(), get()) }

    single { RetrofitWrapper(get(), get()) }

    single { NetworkHandler(get()) }

    single { Prefs(get()) }

    single { Downloader(get()) }

    single { AccountRepositoryImpl(get(), get()) as AccountRepository }

    single { API(get(), AccountApi::class.java).instance }

    single { API(get(), PollApi::class.java).instance }
    single { PollRepositoryImpl(get(), get()) as PollRepository }

    single { API(get(), ApkApi::class.java).instance }
    single { ApkRepositoryImpl(get(), get()) as ApkRepository }

}

写Demo肯定是用不到,和ViewModel结合,写大一点的应用还是有一定的必要。

单元测试

robolectric,空API提供系统级别模拟测试

Kluent, 面向Kotlin的Fluent断言库

"hello" shouldNotEqual "world"

mockito, 学习成本比较高的模拟接口框架

质量

leakCanary,内存泄漏问题检测

其他:

kotlin协程,暂时不要在项目中用吧,不太好用,跟Rx相比,不好用

blankj:utilcode, Android工具库,比较全,但Anko:Common基本的类似于Toast和alert 扩展方法更好用。

EventBus, 很久的事件总线,基本上每个项目都有这个框架。学习成本较低,也很好用。

MPAndroidChart, Android图表库。

RxPermission M以上的权限申请

GrowingIO 企业级打点

jkeyboardpanelswitch 键盘弹出处理

pinyin4j-2.5.0.jar 拼音搜索

TBS 腾讯浏览器服务,主要针对低版本

ical4j RRule 生成工具

jsoup Java爬虫,HTML解析工具

qmui 腾讯的UI库,写demo很好用

calendarview 很容易定制的日历组件

不太重要

其他的一些各种视图上的,比如各种下拉菜单什么的,基本上没有学习成本,GitHub上也是一大堆。

写在最后

框架的掌握在外企和大企业,一般不被看重,更重的是基础能力,比如操作系统,算法,数据结构三大老大难的问题,面试造火箭,工作拧螺丝,后台几百万并发,前端各种秒开。无论去大公司还是小公司,基础知识总是不能被抛弃,虽然用不上,却也会潜移默化的影响编程习惯和思考方式。了解一些框架是避免踩已经很明确的坑,重复造轮子是没有意义的,在小公司意味着一个人的独立开发能力和上手时间成本。在工作中学习和掌握新框架是具有风险的,尤其是一些比较复杂的框架Rx等,可能会导致线上的事故。所以,尽可能的去了解一些新的框架,新的趋势,也是对自己的一个提升。

不过,话说回来,真的没什么新意,也没必要每一个都要捧着源码来解析这个,分析那个,不至于。我们把库比作轮子,你想想,造个轮子和造汽车相比,那个更难。业务复杂性不输于框架,只是术业有专攻。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值