保存应用程序状态
问题描述:
从my question on sharing state between Activities开始,如何保存我的应用程序的实例状态?由于Application
不延伸Activity
,所以没有onSaveInstanceState
方法可以覆盖。保存应用程序状态
注:事先,这不是重复的。尽管它的名字,How do I save an Android application’s state?涉及到活动状态
答
您不能使用Application.onTerminate()
,因为谁也不能保证,这将被调用。
出于同样的原因,您不能使用onStop()
或onDestroy()
或从Activity
。
因此,您必须在每个活动中的onPause()
方法中进行保存。每个Activity
都会在Application
中创建一个saveState()
。由于这将会被调用很多,所以您需要尽可能高效,理想情况下只需将更改后的数据写入持久性存储。
您还应该注意,onSaveInstanceState()
应仅用于存储瞬态状态的Activity
。例如,如果Activity
由用户按下后退按钮onSaveInstanceState()
而未被调用。所以,即使你没有共享状态,你仍然应该使用onPause()
来保存持续的更改。