Jetpack Compose、Hilt、Kotlin Flow 和 Coroutines——Android 开发者必备技能
作为移动开发人员,我们的首要任务之一是保持最新状态并查看最新公告,即使这意味着要走出我们的舒适区。去年,Android 世界发生了一些有趣的事情,但是,我将重点关注其中最重要的一些,我们应该在 2022 年开始使用它们。
1、Jetpack Compose
肯定是去年最大的公告。影响很多开发领域的东西,即使它只是针对 UI 层。这是在 Android 上创建视图的全新方式。我们最终可能会放弃 XML 并用声明式代替命令式思维方式。Android 终于以现代风格创建用户界面赶上了其他平台。
Jetpack Compose 是围绕 Kotlin 编写的,它得到了 Google 的大力支持,即使它在创建真正高级的视图时仍然存在一些限制。但是,您会发现对新导航、保存状态和主题的支持。还有很多带有教程的文章和视频,所以已经值得尝试了。尤其是即将推出对 Material You 的支持——这是 2021 年的另一个重大新闻。
@Composable
private fun AppTheme.StepsView(
modifier: Modifier,
numberOfSteps: Int,
currentStep: Int,
accentColor: Color,
) {
val inactiveColor = colors.textGray
Row(
modifier = modifier,
horizontalArrangement = Arrangement.Center,
verticalAlignment = Alignment.CenterVertically,
) {
(1..numberOfSteps).forEach {
when {
it < currentStep -> Checkmark(accentColor)
it == currentStep -> Step(it, accentColor)
else -> Step(it, inactiveColor)
}
if (it < numberOfSteps) {
val color = if (it < currentStep) accentColor else inactiveColor
Line(color)
}
}
}
}
此外,如果您开始使用 Jetpack Compose,请务必熟悉Accompanist — Compose 的支持库。
2、Hilt
Hilt 是一个新的依赖注入工具,建立在最流行的工具 - Dagger 之上。它专为 Android 构建,支持视图模型、活动、片段,甚至已经提到的 Jetpack Compose。对比 Dagger,配置真的很简单,错误也更清楚,所以即使对于依赖注入经验较少的人来说,也应该是可以理解的。
@AndroidEntryPoint
class MainActivity : AppCompatActivity() {
private val viewModel by viewModels<MainViewModel>()
}
@HiltViewModel
class MainViewModel @Inject constructor() : ViewModel()
@Module
@InstallIn(SingletonComponent::class)
class AppModule
可以看到,Hilt 包含了很多 Android 开发的便利。对我来说,这似乎是我们发展的未来,所以如果你还没有尝试过,是时候去看看了。
3、Kotlin Flow
几年前,Kotlin 被宣布为官方编程语言。Kotlin Coroutines 前段时间已经普及。现在,是时候进行下一步了——Kotlin Flow,它是 RxJava 的轻量级替代品。
Kotlin Flow 是一种我们可以返回多个异步计算值的方式。最流行的选项可能是 StateFlow,或者它的可变对应物,它公开了一个当前值。之后,您可以熟悉 SharedFlow 和 Flow 构建器。
它有很多类似于 RxJava 的运算符,但它试图保持一个非常简单的设计。如果你使用 Kotlin Coroutines,它应该是你的首选。它甚至支持 LiveData,然而,Android 的开发正朝着放弃 LiveData 的方向发展,转而支持 Flow。
class FavoritesListUseCase @Inject constructor() {
private val _viewState = MutableStateFlow<FavoritesListViewState>(FavoritesListViewState.Loading)
val viewState: Flow<FavoritesListViewState> = _viewState
suspend fun refreshFavoritesViewState() {
_viewState.value = FavoritesListViewState.Loading
_viewState.value = requestFavorites()
}
@HiltViewModel
class FavoritesListViewModel @Inject constructor(
private val useCase: FavoritesListUseCase,
) {
val viewStateLiveData: LiveData<FavoritesListViewState> = useCase.viewState.asLiveData()
fun refreshFavoritesViewState() {
viewModelScope.launch { requestFavoritesViewState() }
}
}
如果您想了解有关 Kotlin Flow 的更多信息,JetBrains 创建了一个非常棒的文档。
概括
看起来只有 3 个主题,但它们可以完全改变您编写 Android 应用程序的方式,因为它们涉及代码库的所有层。
更重要的是,我认为这 3 个工具应该一起使用,有助于创建更好、更健壮、更易于测试的代码库。这些是最新的 Android 趋势,花一些时间学习这些工具肯定会有所回报。
链接:https://kerollosragaie.hashnode.dev/android-development-trends-for-2022
网友评论