你们好,我是秉心说。html
新一期的 Now in Android 又更新了,原文地址以下:android
https://medium.com/androiddevelopers/now-in-android-15-44bf3307a8f2git
照例给你们总结一下。往期全部文章能够在这里查看:github
https://luyao.tech/categories/nowinandroidweb
下面进入这一期的最新内容。安全
上一期中介绍了 开发者预览版 2,到目前为止没有新版本的发布。Chet Haase 在原文中分享了几个值的一提的内容。架构
Android 11 开发者预览版 2 为 Native 开发者新增了 Thermal API 。(我也不知道这是个啥)app
Michael Hazard 发布了一篇关于在 Android 模拟器上运行 ARM 应用的文章:jvm
https://android-developers.googleblog.com/2020/03/run-arm-apps-on-android-emulator.html编辑器
咱们的 PC 大多基于 x86 架构,对于依赖 ARM 库且没法构建 x86 版本应用的开发者来讲,只能使用完整的 ARM 模拟系统映像,其速度是远远低于在 x86 设备上运行 x86 系统映像的。
在最新的 Android 11 系统映像中,这一问题得以解决。Android 11 系统映像可以在不影响整个系统的前提下,直接将 ARM 指令转换成 x86 指令。开发者无需搭建高负载的 ARM 环境便可执行 ARM 二进制文件并进行测试。
上一期中有介绍过 IME 动画,经过监听 IME 动画可让开发者平滑的调整视图内容。Chris Banes 开源了一个 Sample App 来展现这一效果。
源代码地址以下:
https://github.com/android/user-interface-samples/tree/master/WindowInsetsAnimation
四月初不少 AndroidX 库都发布了版本,包括如下 Stable 版本:
这里提一下 Fragment 1.2.4 中的 Lint 优化。
在 Fragment 1.2.0 版本中曾经添加了一条 Lint 提示:
New Lint checks: Added a new Lint check that ensures you are using
getViewLifecycleOwner()
when observingLiveData
fromonCreateView()
,onViewCreated()
, oronActivityCreated()
.
建议咱们调用 observe()
方法时传入 getViewLifecycleOwner()
,而不是 this
。
这是为了预防 Fragment 中 View 和 LifecycleOwner 生命周期不一致可能形成的空指针问题。
在最新的 Fragment 1.2.4 中,针对 DialogFragmnet 去除了这一 Lint 规则。
Disabled the
FragmentLiveDataObserve
Lint rule onDialogFragment
classes as their lifecycle and view lifecycle are always in sync, making it safe to use eitherthis
orviewLifecycleOwner
when callingobserve
开发者团队也对此做出说明,DialogFragment
的生命周期和 View 的生命周期老是同步的,使用 this
或者 viewLifecycleOwner
都是安全的。
这个修复来自 issuetracker 中用户的反馈,详细信息可查看:
https://issuetracker.google.com/issues/151765086
除了上面提到的两个 Stable 版本发布,还有一些 Beta 和 Alpha 版本。
Jetpack 全部库的发布记录在官网上均可以看到,地址以下:
https://developer.android.com/jetpack/androidx/versions
切换左边的 Channels ,能够查看各种别的类库更新记录。
Nick Anthony 发布了一篇关于如何从 Support 库迁移到 AndroidX 的文章,地址以下:
https://medium.com/androiddevelopers/migrating-to-androidx-tip-tricks-and-guidance-88d5de238876
这篇文章阅读量并不高,我想大部分人应该都不须要这篇文章了。实在没有任何理由再继续使用 Support 库了。
Google 的工程师大部分也都居家办公了,受环境限制,视频录制不是那么方便。但这并不妨碍工程师们分享知识,一些人选择了录屏分享。
Jose Alcérreca 分享了一些简短的录屏,我看了一些,也都比较基础,大多都在几分钟以内。
View Binding
https://www.youtube.com/watch?list=PLNUr_cTShrWZNKJlnurh5MB1wkSEU2nlw&v=5VaWzrX6VZA
UI Test
https://www.youtube.com/watch?v=EPcpKzAGZuI&list=PLNUr_cTShrWZNKJlnurh5MB1wkSEU2nlw&index=3&t=0s
LiveData 和 ViewModel 的使用
https://www.youtube.com/watch?v=j1WdWCAkYig&list=PLNUr_cTShrWZNKJlnurh5MB1wkSEU2nlw&index=4&t=0s
DataBinding
https://www.youtube.com/watch?v=j8xeUqKylBE&list=PLNUr_cTShrWZNKJlnurh5MB1wkSEU2nlw&index=5&t=0s
首先是关于 协程 的一个视频 Kotlin Coroutines 101 ,来自 Manuel Vivo 。地址以下:
https://www.youtube.com/watch?v=ZTDXo0-SKuU&feature=youtu.be
主要介绍了什么是协程以及协程解决了什么问题,还有协程的取消和测试。
接着是 Kotlin Vocabulary 系列,这一期的主题是 内联函数 ,同时发布了文章和视频。
文章地址:
https://medium.com/androiddevelopers/inline-functions-under-the-hood-12ddcc0b3a56
视频地址:
https://www.youtube.com/watch?v=wAQCs8-a6mg&feature=youtu.be
对于内联函数,编译器会把函数代码直接复制到函数调用处,以此来消除当参数类型是 lambda 时带来的额外的内存消耗。但内联函数并非万能的,通常只用参数是 lambda 的状况下。当函数体很复杂的时候,也不适合用内联,反而会增大程序体积,得不偿失。
最后一篇 Kotlin 相关的文章是 Coroutines & Patterns for work that shouldn’t be cancelled ,地址以下:
https://medium.com/androiddevelopers/coroutines-patterns-for-work-that-shouldnt-be-cancelled-e26c40f142ad
这是 协程的取消和异常 系列的第四篇。这个系列的文章含金量很高,后续我会翻译一下这四篇文章。
你们确定都了解了如何在 ViewModel/LiveData/Lifecycle 中正确的使用协程,使得在恰当的状况下能够取消协程,好比用户离开当前页面。可是当咱们就是须要作一些长期的任务,即便用户离开当前页面也不须要取消,那么应该如何处理呢?这时候就须要 自定义做用域 。具体的的实现能够阅读原文,或者等待个人译文。
首先是 Tiem Song 发布的 Jetpack 相关视频,以 Sunflower sample application 为例,讲解了 Jetpack 的基本使用。地址以下:
https://www.youtube.com/watch?time_continue=898&v=2h-vuXC0SF8&feature=emb_logo
接着是 Pietro Maggi 发布的 WorkManager 系列第五篇文章,Customizing WorkManager — Fundamentals ,地址以下:
https://medium.com/androiddevelopers/customizing-workmanager-fundamentals-fdaa17c46dd2
这篇文章我没有看,就很少介绍了。
最后,大概是这一期惟一的新鲜东西了,MergeAdapter 。最新的 recyclerview-1.2.0 中发布了 MergeAdapter ,你能够将多个 Adapter 合并为一个。文章地址:
https://medium.com/androiddevelopers/merge-adapters-sequentially-with-mergeadapter-294d2942127a
关于 MergeAdapter ,我也在第一时间跟进发布了文章和 Sample。
https://luyao.tech/archives/mergeadapter
其余:Sean McQuillan 更新了Jetpack Compose 的示例 App,地址以下:
https://github.com/android/compose-samples/releases/tag/dev08
我的仍是很是期待 Compose,虽然怎么看都有点遥遥无期的感受。
https://medium.com/androiddevelopers/layout-inspector-1f8d446d048https://user-gold-cdn.xitu.io/2020/4/7/171554ab6dbdf693?w=1710&h=624&f=png&s=47213
介绍了最新的 Layout Inspector 进展。在 4.0 中,支持视图的 3D 展现,视图实时更新,直接跳转到视图声明处。我也写了一篇文章进行介绍:
这一期的 Now in Android 就到这里了。
这里是秉心说,欢迎关注个人公众号,第一时间为你带来 Android 最新资讯。
本文使用 mdnice 排版