美文网首页
2022年安卓发展趋势

2022年安卓发展趋势

作者: 蜗牛是不是牛 | 来源:发表于2022-08-10 14:01 被阅读0次

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

相关文章

网友评论

      本文标题:2022年安卓发展趋势

      本文链接:https://www.haomeiwen.com/subject/ipcawrtx.html