Jetpack 寻英贴
背景
1. Jetpack 的呈现原因和价值
相熟 Jetpack 的开发者都晓得,Jetpack 是 Google 为了解决咱们在 Android 日常开发中遇到的一些痛点而推出的一套组件。比方:
- 为了解决因为屏幕旋转等配置变动引起 Activity 销毁重建而引发的数据失落或解体问题,推出了 Lifecycle 组件。
- 为了解决依赖注入 Dagger 框架应用技术门槛高的问题,推出了 Hilt。
- 为了解决后台任务治理的问题,推出了 WorkManager。
- 为了解决 SQLite 数据库应用便利性和门槛的问题,推出了 ORM 框架 Room,代替 GreenDao。
- 为了解决 Fragment 之间导航的问题,推出了 Navigation。
- 为了解决传统 MVC、MVP 模式下 UI 更新和数据源之间的同步问题,推出了 Databinding+Viewmodel+Livedata 的 MVVM 架构模式,能够很不便的实现双向绑定和动静更新。
- Kotlin 协程与架构组件一起应用,进一步简化了咱们异步工作的解决。
Jetpack 呈现的次要意义有两个:
- 简化 Android 开发者的工作,让开发者更不便、老本更低的构建利用。
- 通过一些举荐的、标准化的做法,便于构建优质的利用。
为了介绍和推广 Jetpack 的应用,Google 官网还推出了将这些架构组件组合在一起应用的 Demo 利用 Sunflower,Jetpack 相干的官网技术文档当初也比较完善了。比方官网举荐的利用架构如下图:
2. 那咱们还有必要做什么吗?
然而,有一点比拟有意思的是,「通常官网的货色在理论的工程实际中,都会有一些特定的需要没法很好的满足」。
为了解决这些痛点,有些开发者就会去造一些很好用的轮子开源进去,而后 Google 缓缓排汇一些好的设计,融进本人的体系中,推出官网的解决方案。这也很失常,也算软件开发中常见的状况。比方 okhttp、ButterKnife、GreenDao、Dagger,都是这么过去的,Google 也在一直的迭代和优化。
那这次的 Jetpack 也一样,最近我在我的项目中应用 Room 和 WorkManager 的时候就遇到了一些问题和一些纳闷。也是间接导致这篇文章和这个流动产生的起因。
3. 我和 Jetpack 的结缘
我开始晓得 Jetpack 和 Kotlin 还算是比拟早的,前几年也加入过几次深圳线下官网推广 Jetpack 和 Kotlin 的技术论坛,有幸见到了 Kotlin 语言的技术布道师 Hadi Hariri,有过短暂的交换。然而始终也没有很深的钻研,更多处于理解和关注它的演进的层面。
因为各种历史起因,咱们的我的项目也没有应用 Kotlin 来写,直到去年底才重形成 Kotlin 版本。做技术的敌人都晓得,理解实践和真正在我的项目中用过,了解层面的深度差别还是挺大的。
最近新开了个我的项目,齐全用规范的 MVVM、Kotlin、Jetpack 来构建,我才真正失去了一些很好的锤炼,也引发了一些思考和更深刻的摸索。
4. 我目前碰到的问题
-
1) 我在应用 Room 中遇到的问题
然而,Room 也有很多先进的设计,比方不能在主线程执行操作,在主线程执行操作运行时会解体;还有写 SQL 语句时如果写的不对编译时就能报错。应用 Room 的确比间接用 SQLite 高效多了,须要写的代码也少了很多。
- 2)我在应用 WorkManager 和看官网文档时遇到的一些纳闷和问题
咱们想做些什么?
很显然,Google 官网的计划也不是全能的,它可能是从各个渠道收集来的一些痛点而后推出解决方案,但也不可能全都能笼罩,它也须要去迭代和优化。在工程实际中,面对简单的需要场景,还是可能会有一些痛点没有失去很好地满足的。
兴许是他们都没有想到或遇到过的场景,比方咱们国家的互联网规模比拟大,有好几个用户群体比拟大的超级 APP,面临的场景和技术挑战兴许是目前其余国家都没有遇到过的,这些过程中积淀进去的技术计划兴许是有领导价值的。
比方咱们在跟 Android 零碎限度斗智斗勇过程中积淀进去的插件化技术,这个气氛要比国外的要好一些,也是一些需要场景推动下的产物。中国软件行业倒退到明天,咱们有一些畛域是能够平等交换的了,也是能够进行一些技术输入的。
基于以上的起因,咱们次要想探讨:
- Jetpack 组件的最佳实际,有什么优缺点,什么场景该用它,什么场景不能用它。(解决应用上的问题)
- 探索 Jetpack 的原理以及实践和工程实际之间的差距,有什么中央是设计得还不够敌对的,或者是不能很好的满足需要场景的,是还能够优化的(解决优化的问题)
通过以上的摸索,咱们想积淀出一些更有实用价值的最佳实际。
另外,一个人学技术是干燥、低效、无限的,找一群气味相投的人一起学习,大家互相学习,所长互补,也是一件幸事。
如果能因缘际会帮忙到更多遇到同类问题的人,那也挺好的。
最初,对 Jetpack 感兴趣也满足招募条件的 Android 开发者,欢送分割我交换。(请备注明:Jetpack)