正常启动生命周期
2022-10-13 15:06:22.779 15547-15547/com.wuhongru.workman E/error: onCreate
2022-10-13 15:06:22.834 15547-15547/com.wuhongru.workman E/error: onStart
2022-10-13 15:06:22.836 15547-15547/com.wuhongru.workman E/error: onResume
启动后跳转到其他页面 并且activity在后台被销毁
2022-10-13 15:06:22.779 15547-15547/com.wuhongru.workman E/error: onCreate
2022-10-13 15:06:22.834 15547-15547/com.wuhongru.workman E/error: onStart
2022-10-13 15:06:22.836 15547-15547/com.wuhongru.workman E/error: onResume
2022-10-13 15:07:30.618 15547-15547/com.wuhongru.workman E/error: onSaveInstanceState
2022-10-13 15:07:30.641 15547-15547/com.wuhongru.workman E/error: onDestroy
启动后跳转到其他页面 activity被销毁 返回到销毁后重建的activity
2022-10-13 15:06:22.779 15547-15547/com.wuhongru.workman E/error: onCreate
2022-10-13 15:06:22.834 15547-15547/com.wuhongru.workman E/error: onStart
2022-10-13 15:06:22.836 15547-15547/com.wuhongru.workman E/error: onResume
2022-10-13 15:07:30.618 15547-15547/com.wuhongru.workman E/error: onSaveInstanceState
2022-10-13 15:07:30.641 15547-15547/com.wuhongru.workman E/error: onDestroy
2022-10-13 15:09:02.936 15547-15547/com.wuhongru.workman E/error: onCreate
2022-10-13 15:09:02.982 15547-15547/com.wuhongru.workman E/error: onStart
2022-10-13 15:09:02.983 15547-15547/com.wuhongru.workman E/error: onRestoreInstanceState
2022-10-13 15:09:02.986 15547-15547/com.wuhongru.workman E/error: onResume
重点关注
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
}
override fun onSaveInstanceState(outState: Bundle) {
super.onSaveInstanceState(outState)
}
override fun onRestoreInstanceState(savedInstanceState: Bundle) {
super.onRestoreInstanceState(savedInstanceState)
}
一套简单流程
private lateinit var mBinding: ActivityMainBinding
private val mModel: MyViewModel by viewModels()
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
mBinding = DataBindingUtil.setContentView(this, R.layout.activity_main)
mBinding.edit.addTextChangedListener {
mModel.editString.postValue(it.toString())
}
if (savedInstanceState != null) {
mBinding.edit.setText(savedInstanceState.getString("edit"))
}
}
override fun onSaveInstanceState(outState: Bundle) {
super.onSaveInstanceState(outState)
outState.putString("edit", mModel.editString.value)
}
override fun onRestoreInstanceState(savedInstanceState: Bundle) {
super.onRestoreInstanceState(savedInstanceState)
mBinding.edit.setText(savedInstanceState.getString("edit"))
}
关于 onSaveInstanceState(outState: Bundle)
onSaveInstanceState() 方法 在activity意外死亡 如内存不足 按下Home键的时候会调用 但是在用户手动销毁 如按下返回键的时候并不会调用。
总结为 系统销毁调用 用户主观销毁不调用
关于 onRestoreInstanceState(savedInstanceState: Bundle)
onSaveInstanceState方法和onRestoreInstanceState方法“不一定”是成对的被调用的。