本文將向大家介紹2020年Android發展趨勢的預測。
作者 | Maciej Kozłowski
譯者 | 彎月,責編 | 郭芮
出品 | CSDN(ID:CSDNnews)
以下為譯文: 如果你是移動開發人員,那麼首先要跟上技術的最新發展趨勢,並時刻關注新事物,即使有時你甚至需要質疑自己的信仰。
應用開發人員一方面一直在努力想辦法簡化和縮短開發過程,另一方面也在努力構建最佳的設計和用戶體驗。每年我們都可以看到移動應用開發不斷湧現出先進的新技術和工具。在本文中,我將介紹2020年的新趨勢,幫助你更好地了解最尖端的技術。
Kotlin協程 如果你還沒使用過 Kotlin 協程,那麼我建立你現在就可以開始嘗試,這是執行異步任務的最佳方法之一。自從 Google 宣布推出 Kotlin First 以來,協程的使用變成了很自然的事情。這個工具不僅可以創建同步任務,而且還擁有其他高級功能,例如:
- 通道(Channel)
- 流(Flow)
- Continuation
除此之外,還有一些非常實用的 ViewModel 和 LiveData 擴展:
val userListLiveData: LiveData<List<User>> =
liveData(viewModelScope.coroutineContext + Dispatchers.IO) {
emit(repository.getUserList())
}
fun getUserList() {
viewModelScope.launch {
usersLiveData.value = withContext(Dispatchers.IO) { repository.getUserList() }
}
}
協程與RxJava2 我不打算在本文中深入介紹二者的差異。簡單來說,主要區別在於 RxJava2 是一個非常強大的工具,不僅適用於異步任務。如果你問我應該使用哪種解決方案,答案很簡單,取決於你的需求,所以我建議你多多翻閱有關這兩個工具的文檔,做出慎重的決定。
主題 自 Android 10 起,Google 正式支持暗色主題。這意味著我們可以通過系統設置,將我們的應用調整為系統主題。多主題的支持已添加到許多應用中,例如 Instagram、Chrome 以及 Medium。你還可以使用1.1.0版中的 Material Components Styles 來支持 Android Q 中的暗色主題功能。不過,這個功能仍處於beta版。更多信息請點擊這裏(https://material.io/develop/android/theming/dark/)。
Jetpack安全 在過去幾年中,為了提高 Android 設備的安全性,Google 付出了巨大的努力。雖然並非每個應用都需要高級的解決方案,但是我想特別指出 Google 的這個安全庫。
Jetpack 安全是一種在 Shared Preferences 中安全地存儲數據的方法。最重要的是,這個庫使用了Android Keystore System——最近發布了alpha版(https://developer.android.com/topic/security/data.md)。
導航組件 2018年,Google 在 Google IO上推出了導航組件(Navigation Component),並於一年後的2019年3月推出了穩定版本。
這是一種全新的設計 Android 應用導航圖的方式。這個解決方案類似於 iOS 中的 Story Board。我們可以在導航編輯器中實現導航圖,或編輯XML文件。導航組件支持片段事務、深層鏈接、SafeArgs以及視圖模型範圍等。
有關導航組件的更多信息,請點擊這裏(https://developer.android.com/guide/navigation/navigation-getting-started)。
ViewPager 2 View Pager 2 於2019年11月20日發布了穩定版本。
View Pager 2 為我們帶來了很多改進:
- 結合 RecyclerView 一起使用;
- 支持垂直定向;
- 新的 PageChangeCallback —— 無需重新所有3個方法;
- 添加了不同的 Page Transformer。
class ViewPager2FragmentStateAdapter(
fragmentManager: FragmentManager,
lifecycle: Lifecycle,
private val texts: List<String>
) : FragmentStateAdapter(fragmentManager, lifecycle) {
override fun getItemCount(): Int = texts.size
override fun createFragment(position: Int): Fragment {
return TextFragment.newInstance(texts[position])
}
}
如果你想了解更多有關View Pager 2的信息,請點擊這裏(https://medium.com/google-developer-experts/exploring-the-view-pager-2-86dbce06ff71)。
Saved State 這是一個庫,可以幫助我們保存實例狀態。如果 ViewModel 能夠保留配置更改的話,為什麼我們還需要 Saved State?因為除了配置更改之外, Android 開發人員還應該注意系統啟動的進程終止。為此,我們應該將序列化的狀態保存在磁盤空間中,而如今現在我們有了內置的 ViewModel。
ViewModel 的穩定版本於2019年9月發行,但RC-03版本中還有一個擴展庫 ViewModel-SavedState。
class MainActivity : AppCompatActivity() {
private val viewModel by viewModels<MainViewModel> {
SavedStateViewModelFactory(
application,
this
)
}
}
class MainViewModel(private val savedStateHandle: SavedStateHandle) : ViewModel() {
fun saveUserId(userId: Int) {
savedStateHandle.set(EXTRA_USER_ID, userId)
}
fun getUserId(): LiveData<Int> {
return savedStateHandle.getLiveData<Int>(EXTRA_USER_ID)
}
}
Jetpack Compose 雖然我把 Jetpack Compose 放在了最後,但並不意味著它不重要。老實說,我對這個工具抱有很高的期望。這是一種全新的在 Android 中創建視圖的方法。我們甚至應該為它的出現而歡呼。這個解決方案是一種交互式的創建UI的方式,而且是完全用Kotlin編寫的!
如果你想嘗試Jetpack Compose,那麼可以參考這個教程(https://developer.android.com/jetpack/compose/tutorial)。
然而,Jetpack Compose 目前還處於預覽階段,甚至還沒有Alpha版本。
總結 2019年,Android 的世界發生了很多大事。最令人期待的莫過於 Jetpack Compose,但距離它的穩定似乎還需要很長一段時間。也許2020年我們還看不到穩定版本上線,但是我們應該率先學習起來,因為這代表了在 Android 中構建視圖的未來。
對於以上我的預測,你有何看法?如果你有不同的想法,請在下方留言。
原文:https://android.jlelse.eu/android-trends-in-2020-d6a2930596a
作者:Maciej Kozłowski,高級Android開發@Espeo Software。
本文為 CSDN 翻譯,轉載請注明來源出處。
熱 文 推 薦
☞京東回應「被薅 7000 萬、項目組全體開除」;微信朋友圈屏蔽支付寶集五福;MySQL 8.0.19 發布 | 極客頭條
☞不再設立 Flag,馬克·紮克伯格的新年寄語!
☞PHP 可能在未來十年內消失?
☞鐵打的春晚,流水的互聯網公司
☞達摩院 2020 預測:模塊化降低芯片設計門檻 | 問底中國 IT 技術演進
☞千萬不要和程序員一起合租!
☞在調查過基於模型的強化學習方法後,我們得到這些結論
☞漫話:如何給女朋友解釋為什麼一到年底,部分網站就會出現日期混亂的現象?
你點的每個“在看”,我都認真當成了喜歡