问题
当一个Activity进入停止状态。它是可能被系统回收的。
如果它被回收了,它的内部数据信息都将丢失。
不仅如此,当应用屏幕方向发生改变时,它会卸载当前活动并重新生成。这也会导致它的内部信息丢失。
如何解决这个问题?
解决方案
从Activity的生命周期可以看到一个回调:onSaveInstanceState()
它可以保证Activity在被回收之前一定会被调用。
onSaveInstanceState()方法会携带一个Bundle类型的参数,Bundle提供了一系列方法用于把保存数据。
1.重载onSaveInstanceState()
override fun onSaveInstanceState(outState: Bundle) {
super.onSaveInstanceState(outState)
// 参数1是字符串,它是键;参数2 是int ,它是值。
outState.putInt(参数1, 参数2)
}
2. 在活动的onCreate()中提取数据
if (savedInstanceState != null) {
// 参数1为键;参数2为当键不存在时返回的默认值
revenue = savedInstanceState.getInt(参数1, 参数2)
}