2020 年,Android 還有哪些新期待?

csdn 發佈 2020-01-14T12:15:09+00:00

自從Google 宣布推出 Kotlin First 以來,協程的使用變成了很自然的事情。這個工具不僅可以創建同步任務,而且還擁有其他高級功能,例如:通道流Continuation除此之外,還有一些非常實用的 ViewModel 和 LiveData 擴展:val userLis

本文將向大家介紹2020年Android發展趨勢的預測。

作者 | Maciej Kozłowski

譯者 | 彎月,責編 | 郭芮

以下為譯文:

如果你是移動開發人員,那麼首先要跟上技術的最新發展趨勢,並時刻關注新事物,即使有時你甚至需要質疑自己的信仰。

應用開發人員一方面一直在努力想辦法簡化和縮短開發過程,另一方面也在努力構建最佳的設計和用戶體驗。每年我們都可以看到移動應用開發不斷湧現出先進的新技術和工具。在本文中,我將介紹2020年的新趨勢,幫助你更好地了解最尖端的技術。

Kotlin協程

如果你還沒使用過 Kotlin 協程,那麼我建立你現在就可以開始嘗試,這是執行異步任務的最佳方法之一。自從 Google 宣布推出 Kotlin First 以來,協程的使用變成了很自然的事情。這個工具不僅可以創建同步任務,而且還擁有其他高級功能,例如:

  • 通道(Channel)

  • 流(Flow)

  • Continuation

除此之外,還有一些非常實用的 ViewModel 和 LiveData 擴展:

val userListLiveData: LiveData<List<User>> =
liveData(viewModelScope.coroutineContext + Dispatchers.IO) {
emit(repository.getUserList)
}

fungetUserList{
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 fungetItemCount: Int = texts.size

override funcreateFragment(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 {

funsaveUserId(userId: Int){
savedStateHandle.set(EXTRA_USER_ID, userId)
}

fungetUserId: 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 翻譯,轉載請註明來源出處。

PHP 可能在未來十年內消失?

關鍵字: