在 Android 开发中,销毁 Activity 是管理应用生命周期的重要部分。以下是销毁 Activity 的常见方法和注意事项:
1. 手动销毁 Activity
方法 1:调用 finish()
kotlin
// 在 Activity 中直接调用
finish()
- 作用:结束当前 Activity,触发
onDestroy()
生命周期方法。
方法 2:通过 Intent 标志销毁
kotlin
// 启动新 Activity 并销毁当前 Activity
val intent = Intent(this@CurrentActivity, NextActivity::class.java).apply {
flags = Intent.FLAG_ACTIVITY_CLEAR_TOP or Intent.FLAG_ACTIVITY_SINGLE_TOP
}
startActivity(intent)
finish()
FLAG_ACTIVITY_CLEAR_TOP
:若目标 Activity 已在栈中,清除其上的所有 Activity。FLAG_ACTIVITY_SINGLE_TOP
:避免重复创建目标 Activity。
2. 生命周期与自动销毁
关键生命周期方法:
kotlin
override fun onPause() {
super.onPause()
// 保存临时数据
}
override fun onStop() {
super.onStop()
// 释放资源(如摄像头)
}
override fun onDestroy() {
super.onDestroy()
// 清理内存、注销监听器
}
3. 处理配置变更(避免销毁重建)
在 AndroidManifest.xml
中配置:
xml
<activity
android:name=".YourActivity"
android:configChanges="orientation|screenSize|keyboardHidden" />
手动处理配置变更:
kotlin
override fun onConfigurationChanged(newConfig: Configuration) {
super.onConfigurationChanged(newConfig)
// 处理屏幕旋转等配置变更
}
4. 保存和恢复状态
临时数据保存
kotlin
override fun onSaveInstanceState(outState: Bundle) {
super.onSaveInstanceState(outState)
outState.putString("key", "value") // 保存数据
}
恢复数据
kotlin
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
val value = savedInstanceState?.getString("key") // 安全恢复数据
}
5. 注意事项(Kotlin 特有)
避免内存泄漏:
- 使用
lifecycleScope
替代全局协程。 - 在
onDestroy()
中取消协程或监听器:kotlinprivate var job: Job? = null override fun onDestroy() { job?.cancel() // 取消协程 super.onDestroy() }
- 使用
使用
by lazy
或viewBinding
:kotlinprivate val binding by lazy { ActivityMainBinding.inflate(layoutInflater) } override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(binding.root) }
示例:销毁前一个 Activity
kotlin
// 启动新 Activity 并销毁当前 Activity
val intent = Intent(this, NextActivity::class.java)
startActivity(intent)
finish() // 销毁当前 Activity