Hello 各位同学好呀,我是 wanbo,今天我们继续更新 Now in Android 的第二期。
Now in Android 是由 Chet Haase 在 Medium 上发布的一系列关于 Android 相关技术的文章,创办这个系列的目的是为了,帮助广大开发者可以更好的掌握 Android 的最新技术动态,最近 Android Team 重新设计了新系列的 **Now in Android 。**全新的 Now in Android 目前将会整合所有 Android 开发者需要掌握和学习的最新内容,以视频和文章的形式为大家统一介绍,并在文章中会附上相应技术的官方链接地址,帮助大家了解详细内容。
我也会结合自己的理解,在本公众号【Android|Kotlin】中为大家同步更新 Now in Android 的最新内容,感兴趣的同学记得关注订阅呀。
AndroidX 的推出是为了解决 support 带来的 API 碎片问题,同时 AndroidX 也避免了之前很多 API 的发布更新需要随着 Android 的大版本更新而更新的问题,如果你还在使用 support 包那需要赶快切换到对应的 AndroidX 包中,因为 support 包现在已经停止更新了,新的功能目前只会在 AndroidX 中更新。
上图截自于 AndroidX 的官方文档,上面列举了目前存在的 AndroidX 库以及该库目前的各个存在版本,点击详情还可以查看各个版本的更新日志,在升级版本之前,可以先在官网上 Check 一下更新日志,确保不会出现严重的兼容性问题。文档地址如下:
https://developer.android.com/jetpack/androidx/versions
同时文档中,还罗列了 support 与 AndroidX 各个包的对应关系,建议在充分了解后再做 support 与 AndroidX 的迁移。文档地址如下:
https://developer.android.com/jetpack/androidx/migrate/artifact-mappings
下面是截止 1 月 22 日,Android X 的更新记录:
Fragment 1.2.0 版本更新
1.2.0 中推荐使用 FragmentContainerView 替代原有的 和 标签,来作为 Fragment 的容器。同时 Fragment 支持 Lifecycle ViewModel SavedState,并更改了 onDestroyView() 的调用时机,确保 Fragment 会在退出动画执行完毕之后再执行 onDestroyView(),更新日志地址如下:
https://developer.android.com/jetpack/androidx/releases/fragment#1.2.0
同时欢迎查看之前更新的文章 ,该文章中介绍了目前 Android 团队对 Fragment 之后的发展方向和规划。
Lifecycle 2.2.0 版本更新
新的 lifecycle-runtime-ktx 工件实现了 Lifecycle 协程与 Kotlin 协程之间的集成。此外,我们还扩展了 lifecycle-livedata-ktx 以便利用协程的优势。更新日志地址如下:
https://developer.android.com/jetpack/androidx/releases/lifecycle#2.2.0
Lifecycle-Viewmodel-Savedstate 1.0.0 首个正式版发布
ViewModels 现在可以通过 SavedStateHandle 在 onSaveInstanceState() 中保存临时数据,保证 Activity 或 Fragment 在销毁重建时,可以自动恢复 ViewModels 中的数据。而且你不需要手动编写额外保存数据的逻辑,这一切都是自动实现的,关于更多的使用方式可以参考一下地址内容:
https://developer.android.com/topic/libraries/architecture/viewmodel-savedstate
Navigation 2.2.0 版本更新
您现在可以调用 NavController.getBackStackEntry() 获取新的 NavBackStackEntry,可以从新返回的 NavBackStackEntry 中获取到 Lifecycle 以及 SavedState 的相关信息。其余更新还有 deep link 参数查询支持和动画方面的改进。更新日志地址如下:
https://developer.android.com/jetpack/androidx/releases/navigation#2.2.0
WorkManager 2.3.0 版本更新
提供了新的 API setProgress() 和 setForeground(),帮助你在 Worker 执行是获取当前任务的执行进度,以及允许 Worker 在前台服务中执行。更新日志地址如下:
https://developer.android.com/jetpack/androidx/releases/work#2.3.0
Android Studio 3.6 在去年 12 月发布了首个 RC 版本。截止目前最新的正式版已更新到 3.6 RC3,新的 3.6 版本启用了新的设计编辑器。新的设计编辑器(如 Layout Editor 和 Navigation Editor)现在提供了 Split 视图,可让您同时查看界面的 Design 视图和 Code 视图。要启用拆分视图,请点击编辑器窗口右上角的 Split 图标 拆分视图图标。
除此之外,还更新了 memory profiler 可以帮助开发者更方便的检查内存泄漏的问题,以及支持开启 View Binding 用于替代之前的 findViewById,更新日志地址如下:
https://developer.android.com/studio/preview/features/#3.6
Android Studio 预览版发布了第 9 个预览版本,4.0 更新了很多新的 feature,包括支持 Jetpack Compose,新的 MotionLayout 动画编辑器,新的 3D Layout 查看器等等,如果你对 4.0 的新特性不了解,欢迎查看早期更新的文章:Android Studio 4.0 最新进展,这里就不再赘述。
Florina Muntenescu 开始了新的系列文章:Kotlin Vocabulary。每期一个 Kotlin 专属词汇,会为你介绍这个词汇的作用,以及该如何使用。第一篇文章为大家介绍的是 typealias,typealias 的可以简化类型名称,同时赋予它更确切的场景意义。
这篇文章讨论了如何引入 typealias 以及 typealias 的最佳实践,原文地址如下:
https://medium.com/androiddevelopers/alter-type-with-typealias-4c03302fbe43
Wojtek Kaliciński 发布了新的 Codelab :Building a Kotlin extensions library,这个代码实验室展示了如何创建属于自己的 Kotlin 扩展库,就像 Android KTX 一样,为现有的功能做增强。Codelab 地址如下:
https://codelabs.developers.google.com/codelabs/building-kotlin-extensions-library/#0
Android Developers Backstage 是由 Chet Haase 参与创办的播客频道,至今已经创办了 5 年超过 130 期节目,每一期他们都会讨论和分享关于 Android 的方方面面,从代码到设计、从软件到硬件。
最新的 131 期,Chet Haase 邀请到了 Android UI Toolkit 团队的 Tor,Romain 和 Chet 探讨了新的 UI 构建工具 Jetpack Compose 以及声明式 UI 的方方面面。
podcast 地址:
https://androidbackstage.blogspot.com/2020/01/episode-131-jetpack-compose-and.html
这里同样推荐大家收听来自 Donn Felker 和 Kaushik Gopal 创办的 Podcast Fragmented。第 187 期他们和 Google 的两位专家讨论了有关于协程的相关内容。
podcast 地址:
https://fragmentedpodcast.com/2020/01/
听力好的同学可以关注一下这两个 podcast,有很多有趣的内容和干货在里面。
至此,就是全新的 Now in Android : 02 的内容,这一期为大家介绍了 AndroidX 最新发布的库,Android Studio 3.6 和 4.0 的新特性,以及一篇有关 Kotlin typealias 的文章和一个教你如何编写 Koltin 扩展库的 Codelab,最后为大家推荐了两个播客频道:Android Developers Backstage 和 Fragmented。
本公众号也会开启 Now in Android 的新系列更新,关注公众号【Android |Kotlin】,在首页点击 新鲜事儿 → Now in Android ,就可以看到这一系列文章的全部内容。
感谢你的阅读。