Now in Android #15 —— 最新 Android 知識分享

你們好,我是秉心說。html

新一期的 Now in Android 又更新了,原文地址以下:android

https://medium.com/androiddevelopers/now-in-android-15-44bf3307a8f2git

照例給你們總結一下。往期全部文章能夠在這裏查看:github

https://luyao.tech/categories/nowinandroidweb

下面進入這一期的最新內容。安全

Android 11

上一期中介紹了 開發者預覽版 2,到目前爲止沒有新版本的發佈。Chet Haase 在原文中分享了幾個值的一提的內容。架構

Can You Take the Heat?

Android 11 開發者預覽版 2 爲 Native 開發者新增了 Thermal API 。(我也不知道這是個啥)app

在 Android 模擬器上運行 ARM 應用

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 動畫 Sample App

上一期中有介紹過 IME 動畫,經過監聽 IME 動畫可讓開發者平滑的調整視圖內容。Chris Banes 開源了一個 Sample App 來展現這一效果。

源代碼地址以下:

https://github.com/android/user-interface-samples/tree/master/WindowInsetsAnimation

AndroidX

四月初不少 AndroidX 庫都發布了版本,包括如下 Stable 版本:

  • ExifInterface 1.2.0 ,支持向 PNG 圖片寫入 EXIF 元數據,對 WebP 讀寫 EXIF 。如今 ExifInterface 能夠處理對 PNG,JPEG,WebP 類型的文件寫入。
  • Fragment 1.2.4 優化了 Proguard 和 Lint 。

這裏提一下 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 observing LiveData from onCreateView(), onViewCreated(), or onActivityCreated().

建議咱們調用 observe() 方法時傳入 getViewLifecycleOwner() ,而不是 this

這是爲了預防 Fragment 中 View 和 LifecycleOwner 生命週期不一致可能形成的空指針問題。

在最新的 Fragment 1.2.4 中,針對 DialogFragmnet 去除了這一 Lint 規則。

Disabled the FragmentLiveDataObserve Lint rule on DialogFragment classes as their lifecycle and view lifecycle are always in sync, making it safe to use either this or viewLifecycleOwner when calling observe

開發者團隊也對此做出說明,DialogFragment 的生命週期和 View 的生命週期老是同步的,使用 this 或者 viewLifecycleOwner都是安全的。

這個修復來自 issuetracker 中用戶的反饋,詳細信息可查看:

https://issuetracker.google.com/issues/151765086

除了上面提到的兩個 Stable 版本發佈,還有一些 Beta 和 Alpha 版本。

Jetpack 全部庫的發佈記錄在官網上均可以看到,地址以下:

https://developer.android.com/jetpack/androidx/versions


切換左邊的 Channels ,能夠查看各種別的類庫更新記錄。

向 AndroidX 遷移

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

首先是關於 協程 的一個視頻 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 中正確的使用協程,使得在恰當的狀況下能夠取消協程,好比用戶離開當前頁面。可是當咱們就是須要作一些長期的任務,即便用戶離開當前頁面也不須要取消,那麼應該如何處理呢?這時候就須要 自定義做用域 。具體的的實現能夠閱讀原文,或者等待個人譯文。

Jetpack

首先是 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,雖然怎麼看都有點遙遙無期的感受。

Android Studio

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 展現,視圖實時更新,直接跳轉到視圖聲明處。我也寫了一篇文章進行介紹:

Layout Inspector 支持 3D 視圖了!

最後

這一期的 Now in Android 就到這裏了。

這裏是秉心說,歡迎關注個人公衆號,第一時間爲你帶來 Android 最新資訊。

本文使用 mdnice 排版

相關文章
相關標籤/搜索