你們好,我是秉心說。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 排版