问题

当一个Activity进入停止状态。它是可能被系统回收的。
如果它被回收了,它的内部数据信息都将丢失。
不仅如此,当应用屏幕方向发生改变时,它会卸载当前活动并重新生成。这也会导致它的内部信息丢失。
如何解决这个问题?


解决方案

Activity Lifecycle

从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)
}
最后修改:2020 年 06 月 02 日
如果觉得我的文章对你有用,请随意赞赏