📌  相关文章
📜  了解 Activity 生命周期以在 Android 中按下后保留 UI 数据(1)

📅  最后修改于: 2023-12-03 15:36:02.680000             🧑  作者: Mango

了解 Activity 生命周期以在 Android 中按下后保留 UI 数据

在 Android 应用程序中,Activity 生命周期是非常重要的。了解 Activity 生命周期有助于我们在按下返回键或屏幕旋转时正确地保留 UI 数据,使用户体验更好。

什么是 Activity 生命周期?

Activity 生命周期是指 Activity 的创建、启动、暂停、恢复和销毁等一系列阶段的变化。当用户启动一个 Activity 时,系统将其放入栈中并管理其状态转移。当 Activity 不再可见时,它可能会被暂停、停止或销毁,具体取决于用户在应用程序中执行的操作。

Activity 生命周期的步骤
  1. onCreate(): Activity 被创建时调用,可以在此方法中初始化 UI 和绑定 Layout。
  2. onStart(): Activity 可见但还未被启动时调用。
  3. onResume(): Activity 启动并可见时调用。
  4. onPause(): Activity 不再可见但仍在前台时调用。
  5. onStop(): Activity 完全不可见时调用。
  6. onRestart(): 在 onStop() 后如果再次启动 Activity 时调用。
  7. onDestroy(): Activity 被销毁时调用,释放所有资源并取消绑定服务。
如何保留 UI 数据?

在 Android 应用程序中,如果用户按下返回键或屏幕旋转,Activity 将销毁并重新创建,这可能会导致 UI 数据的丢失。为了避免这种情况,我们可以使用 onSaveInstanceState() 方法来保存数据并在 onCreate() 中进行还原。

保存数据

在 onSaveInstanceState() 方法中,我们可以使用 Bundle 对象来保存需要保留的数据。代码如下:

override fun onSaveInstanceState(outState: Bundle) {
    outState.putString("key_name", name) // 保存字符串 name
    outState.putInt("key_age", age) // 保存整型 age
    super.onSaveInstanceState(outState)
}
恢复数据

在 onCreate() 方法中,我们可以从 savedInstanceState 对象中恢复数据。代码如下:

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main)
    if (savedInstanceState != null) {
        name = savedInstanceState.getString("key_name") // 恢复字符串 name
        age = savedInstanceState.getInt("key_age") // 恢复整型 age
    }
}
结论

在 Android 应用程序中,了解 Activity 生命周期可以帮助我们正确地保留 UI 数据。我们应该使用 onSaveInstanceState() 方法来保存数据,并在 onCreate() 方法中恢复数据。