Activity被回收
一般情况下,只有activity被销毁后才hi被回收。可是,当系统内存不足时,他会将处于停止状态的activity也回收了。
如果停止状态的activity没被回收,那么再次启动时,将会执行onRestart()
方法,然后恢复数据,但是如果被回收后,他会执行onCreate()
方法,也就导致,如果这个activity有文本输入框的话,这些数据都会直接消失。
因此为了解决这个问题,Activity提供了一个onSaveInstanceState()
回调方法。他在回收前一点会调用该方法。该方法需要一个Bundle参数,也可以用put之类的保存键值对参数。如下代码:
1 | override fun onSaveInstanceState(outState: Bundle){ |
数据已经保存了,然后恢复的话,需要修改onCreate()的内容
1 | override fun onCreate(savedInstanceState:Bundle?){ |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 小贺同学的blog!
评论