每隔几天我都会通过 Android Developers 的油管官方频道,来了解一下最近 Android 发布了哪些有趣的新技术,最近发现官方推出了一个新的系列视频叫做:Now in Android,目前更新了 4 期,我觉得这个系列蛮有趣的,这周会把已上线的 4 期视频结合自己的理解为大家分享一下,如果你不知道什么是 Now in Android,那么别急,一会就告诉你。
在开始今天的推送之前,先做一个小调查:你通常是从哪里获取最新的 Android 技术动态的?
- Android Developers 官方 Youtube 频道
- developer.android.com 开发者官网
- Android Developers 官方 Medium 频道
- android-developers.googleblog.com 开发者博客
- 国内技术论坛
- 微信公众号
可以在评论区告诉我
什么是 Now in Android?
Now in Android 是由 Chet Haase 在 Medium 上发布的一系列关于 Android 相关技术的文章,创办这个系列的目的是为了,帮助广大开发者可以更好的掌握:Android 团队目前在做什么、有哪些最新更新的 Android 支持库、有哪些最新上线的文档以及代码例子等 Android 开发者需要掌握和关注的内容。
正如上方的小调查一样,开发者能获取 Android 最新的动态的地方太多了,所以 Android Team 重新设计了新系列的 Now in Android 。全新的 Now in Android 目前将会整合所有 Android 开发者需要掌握和学习的最新内容,以视频和文章的形式为大家统一介绍,并在文章中会附上相应技术的官方链接地址,帮助大家了解详细内容。
在我看来这真是太棒了!本公众号也会定期的为大家同步更新 Now in Android 的最新内容,记得订阅关注哦!同时想查看原视频和文章的同学,可以点击文章最后的【阅读原文】查看。接下来就正式为大家带来第一期 Now in Android 的内容。
1. 新的 Room 文档
Room 是 Android Jetpack 中推出的基于 SQLite 的数据库组件,帮助大家在 Android 上更好的使用和操作数据库。基于我目前的使用体验来说,Room 还是非常轻便快捷易上手的,同时也非常好用,推荐指数五颗星。
1.1 定义对象之间的关系
目前 Room 更新了它的文档,帮助大家更好的去定义对象之间的关系。正如上图中所说,Room 虽然是关系型数据库,但它禁止实体对象之间互相引用,所以在新的文档中,Room 提供了以下三种定义对象之间关系的方式:
- 定义一对多关系
- 创建嵌套对象
- 定义多对多关系
更多的内容欢迎查看
https://developer.android.com/training/data-storage/room/relationships
1.2 通过本地文件初始数据库
在 Room 2.2.0 正式版中,支持了通过本地文件初始化数据库,目前支持以下两种初始化方式:
- 从 Asset 加载本地数据库文件
- 从文件系统中加载本地数据库文件
与此同时文档中还提供了本地数据库初始化时的迁移问题,并提供了事例代码,更多的内容欢迎查看
https://developer.android.com/training/data-storage/room/prepopulate
2. Android KTX extensions 文档
安卓 KTX 为现有类提供了 Kotlin 扩展功能,以简化安卓应用编程接口的使用。把它们看作是在我们向后兼容的世界中改进应用编程接口的一种方式,在这个世界中,我们不能改变核心应用编程接口本身,因为这会破坏应用程序。除了更优雅、更简单的应用编程接口之外,它们还利用了关键的Kotlin特性,如lambdas、命名和默认参数、coroutines和(是)扩展函数,使应用编程接口变得更好,更容易集成到您的Kotlin开发流程中。
但是目前有一个很大的痛点:我怎么知道现在有哪些已支持的扩展方法?
反正对我来说,我之前都是在看 GitHub 上面官方的代码时,才知道原来有这样那样的扩展方法可以这样用,不然根本不知道,而且每一个都是独立的
依赖地址,非常麻烦和繁琐。
这次,官方上线了全新的 List of KTX extensions 指南,整理了所有的 Android ktx 文档,文档中标明了哪些类实现了扩展功能,同时提供了依赖地址,从这份文档上,你可以掌握全部的 Android ktx 内容。
更多的内容欢迎查看
https://developer.android.com/kotlin/ktx/extensions-listdeveloper.android.com3. 新的 AndroidX 支持库
在去年 12 月中旬发布了一些全新的 AndroidX 支持库,现有以下 5 个支持库提供了新的 Release 版本提供使用:
- Biometric 1.0.1:Biometric 是一个生物识别支持库,为开发者提供了 API 来实现验证功能,例如指纹识别等。1.0.1 版本没有对 API 进行修改,只是做了一些 bug 修复。
- Browser 1.2.0: Browser 是 Android Jetpack 中操作浏览器的支持库,1.2.0 版本中支持了 Dark Theme 和受信任的网络活动功能。
- Enterprise 1.0.0: Enterprise 是 Android Jetpack 中用于企业反馈的支持库,目前发布了第一个正式稳定版。
- Paging 2.1.1: Paging 是 Android Jetpack 用于 RecyclerView 分页的支持库,2.1.1 做了一些优化更新。
- Room 2.2.3:bug 修复。
4. 文章分享:Observing Room databases with Flow
在 Room 2.2.0 中,Room 增加了使用 Kotlin 的 Flow API 来观察数据库变化的功能,这里有一篇来自 Florina Muntenescu 的文章 《Room Flow》,来帮助你更好的学习该如何使用这一新特性。
文章地址在这里
https://medium.com/androiddevelopers/room-flow-273acffe5b57
5. Codelab 分享:Advanced Coroutines with Kotlin Flow and LiveData
Tiem Song 和 Sean McQuillan 创建了新的 Codelab 来帮助大家学习:如何使用协程、LiveData 以及 Kotlin Flow 来编写程序,同时提供了完整代码的 GitHub 仓库地址。
Codelab 地址:
https://codelabs.developers.google.com/codelabs/advanced-kotlin-coroutines/#0
GitHub 地址:
https://github.com/googlecodelabs/kotlin-coroutines/tree/master/advanced-coroutines-codelab
6. Conference Videos 会议视频分享
这是我这几年切身体会到的一个比较重大的变化,很多的会议视频都被记录下来分享给大家学习,例如每年的 Google I/O 以及 Android Developer submit,能帮助许多不能到现场的同学们,比如我 hhh,快速的了解会议中发布的新讯息。
是不是很多同学也是通过去年,我为大家分享 Android Developer submit 19 时的文章关注的我呢?是的话记得右下角点个好看哦!
这里分享两个会议网站,Droidcon SF 和 Kotlinconf Videos ,他们发布了很多有关 Android 和 Kotlin 的会议视频,感兴趣的同学可以从下方的链接中查阅。
Droidcon SF:
https://www.droidcon.com/videos?path=SanFrancisco
Kotlinconf Videos:
https://www.youtube.com/playlist?list=PLQ176FUIyIUY6SKGl3Cj9yeYibBuRr3Hl
7. ADB Podcast 博客分享
Android Developers Backstage 是由 Chet Haase 参与创办的播客频道,至今已经创办了 5 年超过 130 期节目,每一期他们都会讨论和分享关于 Android 的方方面面,从代码到设计、从软件到硬件,如果你感兴趣,欢迎关注订阅。
ADB Podcast 地址:
http://androidbackstage.blogspot.com/androidbackstage.blogspot.com最后
至此,就是全新的 Now in Android 第一期的内容,第一期为大家介绍了新的 Room 和 Android KTX 文档、AndroidX 中新发布的支持库、以及一些有趣的文章、代码、视频、播客的分享。
我会开启 Now in Android 的新系列更新,关注【Android |Kotlin】就可以看到这一系列文章的全部内容。
感谢你的阅读。
推荐阅读
Android App Dark Theme(暗黑模式)适配指南
Android Studio Debug 的 9 个小技巧
Fragment 的现在以及未来
Android Studio 4.0 最新进展
Android 中不应该使用 Enum 吗?