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