告别 Activity 生命周期,迎接 Compose 生命周期

告别 Activity 生命周期,迎接 Compose 生命周期

Activity Lifecycle VS Compose Lifecycle

作为 Android 应用程序开发人员,您知道管理 Activity 生命周期是构建高质量应用程序的重要组成部分。

起初,我对 Compose Lifecycle 持怀疑态度。多年来我一直在使用 Activity Lifecycle,它对我来说一直运行良好。但是在试用了 Compose 之后,我被它让我作为开发人员的生活变得多么轻松而震惊了

在 Activity Lifecycle 中,需要管理的生命周期方法非常多,而且很快就会变得复杂起来。但是使用 Compose,生命周期更简单,并且框架会处理管理 UI 组件的许多细节。

在这篇博文中,我们将探讨 Compose Lifecycle 的优势以及开发人员为何应考虑使用它而不是传统的 Activity Lifecycle。

回忆Activity的生命周期

Android 中 Activity 的生命周期是 Activity 在创建、使用和销毁时可以经历的一系列状态。Android 系统管理 Activity 的生命周期,并在其生命周期的不同点调用 Activity 上的不同方法。

Activity的生命周期如下:

  1. onCreate():该方法在Activity第一次创建时被调用。您应该在此处执行初始化工作,例如设置 UI、初始化变量或从数据库读取数据。

  2. onStart():当Activity 对用户可见时调用此方法,但在用户可以与其交互之前。

  3. onResume():当Activity 准备好供用户交互时调用此方法。您应该在此处启动动画、播放音频或任何其他需要用户交互的内容。

  4. onPause():当Activity失去焦点时调用该方法,例如用户接到电话或打开另一个应用程序时。您应该在此处暂停动画、停止音频或任何其他需要停止用户交互的内容。

  5. onStop():当Activity不再对用户可见时调用该方法。您应该在这里释放资源,例如关闭数据库连接或停止后台服务。

  6. onRestart():当Activity正在重启时调用此方法,例如当用户按下后退按钮时。

  7. onDestroy():当 Activity 被销毁时调用此方法,例如当用户导航离开 Activity 或系统需要释放资源时。

通过了解 Activity 的生命周期,您可以有效地管理其资源并确保您的应用提供最佳的用户体验。

假设您正在构建一个照片库应用程序,允许用户查看和管理他们的照片。当用户打开应用程序时,他们看到的第一个屏幕是图库屏幕,其中显示了他们所有的照片。以下是 Activity 生命周期在这种情况下的作用:

  1. onCreate():在此方法中,您将初始化图库屏幕的 UI 组件,例如显示照片的 RecyclerView 或 ListView。您还将初始化管理照片所需的任何数据结构或变量。
  2. onStart():当图库屏幕对用户可见时调用此方法,但在用户可以与其交互之前。在这种方法中,您将启动任何必要的后台进程,例如从磁盘或通过网络加载照片的缩略图。
  3. onResume():当画廊屏幕准备好供用户交互时调用此方法。在此方法中,您将启动任何动画,例如照片的幻灯片,或启用触摸手势以允许用户轻扫照片。
  4. onPause():当图库屏幕失去焦点时调用此方法,例如当用户接到电话或打开另一个应用程序时。在此方法中,您将暂停任何动画或后台进程,例如停止幻灯片放映或取消任何网络请求。
  5. onStop():当图库屏幕不再对用户可见时调用此方法。在此方法中,您将释放任何资源,例如关闭数据库连接或停止后台服务。
  6. onRestart():当图库屏幕重新启动时调用此方法,例如当用户在查看照片后导航回图库屏幕时。在此方法中,您将恢复在 onPause() 方法中暂停的任何后台进程或动画。
  7. onDestroy():当图库屏幕被销毁时调用此方法,例如当用户导航离开应用程序或系统需要释放资源时。在此方法中,您将释放所有剩余资源,例如注销事件侦听器或释放内存。

Jetpack Compose Lifecycle

Jetpack Compose 是一种在 Android 应用程序中构建 UI 组件的新方法。在传统的 Android 应用程序开发中,UI 组件是使用 XML 和 Java/Kotlin 代码创建的。这些 UI 组件的生命周期由 Android 系统通过 Activity 或 Fragment 生命周期回调进行管理。

相比之下,Jetpack Compose UI 工具包使用声明式编程模型来定义 UI 组件。开发人员使用 Composable 函数定义 UI 组件,这些函数是用注解注释的函数 。调用 Composable 函数时,它会描述它所代表的 UI 组件,而不是直接构建它。

Jetpack Compose UI 工具包以类似于传统 Android 生命周期的方式管理 UI 组件的生命周期,但有一些差异。

Jetpack Compose 生命周期包括三个主要阶段:

  • 组成(创建)
  • 重组(更新)
  • 处理。(已销毁)
    合成:当一个 UI 组件第一次被创建时,它就进入了合成阶段。在此阶段,Compose 运行时调用定义 UI 组件的 Composable 函数。Composable 函数描述了 UI 组件的结构和行为。

重组:只要它所依赖的数据发生变化,就可以重组 UI 组件。在重组阶段,Compose 运行时检查 UI 组件是否需要更新,如果需要,它会再次调用 Composable 函数。Composable 函数可以通过修改其属性或结构来更新 UI 组件。

处置:当不再需要某个 UI 组件时,它就进入处置阶段。在此阶段,Compose 运行时从 UI 层次结构中删除 UI 组件,并调用为该组件注册的任何清理逻辑。

Android 中的 Jetpack Compose 框架为 UI 组件提供了一个新的生命周期,它不同于 Activity 生命周期。以下是两者之间的一些主要区别:

  1. 初始化:在 Activity 生命周期中,UI 组件通常在onCreate()方法中初始化。相反,在 Compose 生命周期中,UI 组件在方法中初始化setContent(),该方法在 Composable 首次膨胀时调用。
  2. 更新:在 Activity 生命周期中,UI 组件会根据事件或应用程序状态的变化进行更新。相反,在 Compose 生命周期中,只要输入数据或状态发生变化,UI 组件就会重新组合。这意味着与传统的 UI 组件相比,可组合项更具反应性,并且可以更频繁、更高效地更新。
  3. 关注点分离: Compose 生命周期将 UI 组合和 UI 逻辑的关注点分开,而在 Activity 生命周期中,这些关注点通常混合在一起。这可以使 Compose 中的代码更清晰、更易于维护,因为 UI 逻辑可以分离到不同的可组合项中,并在不同的屏幕或组件中重复使用。
  4. 简单性: Compose 生命周期比 Activity 生命周期更简单、更精简。在 Compose 中,需要管理的生命周期方法更少,框架负责管理 UI 组件的许多细节。这可以更轻松地开发和维护基于 Compose 的 UI。
  5. 更轻松的测试:最后,Compose 使测试更容易,因为它为单元测试提供了更好的支持。借助 Compose,开发人员可以隔离地测试各个 UI 组件,这使得查找和修复错误变得更加容易。

Lifecycle示例

Compose 生命周期的真实示例可能是显示当前温度、天气状况和其他相关信息的天气应用程序。在这种情况下,可组合函数将根据当前天气数据(例如温度、湿度和风速)创建 UI 元素。

随着天气的变化,Compose 框架将更新 UI 元素以反映新数据。例如,如果温度下降,将再次调用 Composable 函数并更新 UI 元素以显示新温度。

最后,当用户关闭应用程序时,将不再需要Composable函数并且 UI 元素将被销毁。

下面是一个简单的可组合函数示例,它显示文本消息并在单击按钮时更新它:

@Composable 
fun  ComposeLifecycleExample () {
    
     
    var message by remember {
    
     mutableStateOf( "Hello, World!" ) }     Column {
    
     
        Text(text = message) 
        Button(onClick = {
    
     message = "Button clicked!" }) {
    
     
            Text(text = "点击我" ) 
        } 
    } 
}

在此示例中,Composable 函数创建了一个Column包含一个Text元素和一个Button元素的 。该message变量是使用mutableStateOf函数声明的,它允许 Composable 函数更新 UI 的值message并触发 UI 的重组。

当Button被点击时,onClick回调被触发,将 的值更新message为“Button clicked!”。结果,该Text元素被重新组合为新的消息文本。

这是一个简化的示例,但它演示了 Compose 生命周期如何工作的基本概念。首次调用 Composable 函数时,初始消息值为“Hello, World!” 被展示。单击按钮时,message值会更新,UI 会重新组合为新的消息文本

结论

总而言之,Compose Lifecycle 是一个强大的工具,可以让 Android 应用程序开发变得更简单、更高效。通过简化生命周期,使 UI 更具反应性和效率,以及分离 UI 组合和 UI 逻辑的关注点,Compose 允许开发人员专注于编写更易于测试和维护的高质量代码。因此,如果您是 Android 应用程序开发人员,请考虑尝试使用 Compose Lifecycle,看看它如何使您的项目受益。

猜你喜欢

转载自blog.csdn.net/u011897062/article/details/130557391