Android 保存activity状态

当系统而不是用户自己出于回收内存的考虑,关闭了一个activity 之后。用户会期望当他再次回到那个activity 的时候,它仍保持着上次离开时的样子。

为了获取activity 被杀死前的状态,你应该为activity 实现onSaveInstanceState() 方法。Android 在activity 有可能被销毁之前(即onPause() 调用之前)会调用此方法。

它会将一个以名称-值对方式记录了activity 动态状态的Bundle 对象传递给该方法。当activity 再次启动时,这个Bundle 会传递给 onCreate()方法和随着onStart()方法调用的onRestoreInstanceState(),所以它们两个都可以恢复捕获的状态。

与onPause()或先前讨论的其它方法不同,onSaveInstanceState() 和onRestoreInstanceState() 并不是生命周期方法。它们并不是总会被调用。比如说,Android 会在activity 易于被系统销毁之前调用onSaveInstanceState(),但用户动作(比如按下了BACK 键)造成的销毁则不调用。

在这种情况下,用户没打算再次回到这个activity,所以没有保存状态的必要。

因为onSaveInstanceState()不是总被调用,所以你应该只用它来为activity 保存一些临时的状态,而不能用来保存持久性数据。而是应该用onPause()来达到这个目的。