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> 和 <FrameLayout> 標籤,來作為 Fragment 的容器。同時 Fragment 支持 Lifecycle ViewModel SavedState,並更改了 onDestroyView() 的調用時機,確保 Fragment 會在退出動畫執行完畢之後再執行 onDestroyView(),更新日誌地址如下:
https://developer.android.com/jetpack/androidx/releases/fragment#1.2.0
同時歡迎查看之前更新的文章 Fragment 的現在以及未來,該文章中介紹了目前 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
2. Android Studio 3.6 和 4.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 最新進展,這裡就不再贅述。
3. 文章分享:Kotlin VocabularyFlorina Muntenescu 開始了新的系列文章:Kotlin Vocabulary。每期一個 Kotlin 專屬詞彙,會為你介紹這個詞彙的作用,以及該如何使用。第一篇文章為大家介紹的是 typealias,typealias 的可以簡化類型名稱,同時賦予它更確切的場景意義。
這篇文章討論了如何引入 typealias 以及 typealias 的最佳實踐,原文地址如下:
https://medium.com/androiddevelopers/alter-type-with-typealias-4c03302fbe43
4. Codelab: Building a Kotlin Extensions LibraryWojtek Kaliciński 發布了新的 Codelab :Building a Kotlin extensions library,這個代碼實驗室展示了如何創建屬於自己的 Kotlin 擴展庫,就像 Android KTX 一樣,為現有的功能做增強。Codelab 地址如下:
https://codelabs.developers.google.com/codelabs/building-kotlin-extensions-library/#0
5. ADB Podcast 更新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 ,就可以看到這一系列文章的全部內容。
感謝你的閱讀。