我正在尝试使用SharedPreferences
保存一些变量。在我的onCreate()
方法中,我使用SharedPreferences
初始化我的变量,我想在应用程序结束时存储这些变量。我将此代码放在onTerminate()
方法上,但永远不会存储变量。我认为永远不会调用onTerminate()
方法,因为我也看到这个方法对// not guaranteed to be called
的评论。那么如何在我停止应用程序之前保存变量的状态呢?我知道怎么样,我只是不知道在哪里放置我的代码。
答案 0 :(得分:5)
实际上,为了安全起见,您应该将内容保存在onPause()中,因为(至少在3.0之前)您的进程在调用onPause()之后可能被操作系统杀死。这意味着onStop()和onDestroy()可能会被调用,也可能不会被调用。
在任何情况下,都无法保证会调用onDestroy()。如果操作系统决定终止你的进程,它就不会在任何活动上调用onDestroy()。
答案 1 :(得分:3)
答案 2 :(得分:2)
我希望当应用程序结束时存储这些变量。
这不起作用,因为当“应用程序结束”时你无法控制。
或者:
在数据更改时保存数据,或
在用户告诉您(例如,通过某种保存操作栏项目)或
在调用数据的活动的onPause()
被调用时保存数据
答案 3 :(得分:0)
您也可以在onPause()中执行此操作,具体取决于您的需要。 在这种情况下,每次你的应用程序失去焦点时它都会保存。