6

我正在尝试使用SharedPreferences. 在我的onCreate()方法中,我使用 初始化我的变量SharedPreferences,并且我希望在应用程序结束时存储这些变量。我将此代码放在onTerminate()方法上,但从未存储变量。我认为该onTerminate()方法永远不会被调用,因为我还看到对此方法的评论说// not guaranteed to be called。那么如何在停止应用程序之前保存变量的状态呢?我知道怎么做,我只是不知道在哪里放置我的代码。

4

4 回答 4

8

实际上,为了安全起见,您应该将内容保存在 onPause() 中,因为(至少在 3.0 之前)您的进程可以在调用 onPause() 后被操作系统杀死。这意味着 onStop() 和 onDestroy() 可能会或可能不会被调用。

在任何情况下,都不能保证 onDestroy() 会被调用。如果操作系统决定终止您的进程,它不会费心在任何活动上调用 onDestroy()。

于 2012-06-08T12:32:33.260 回答
5

我想在应用程序结束时存储这些变量。

那是行不通的,因为当“应用程序结束”时您无法控制。

任何一个:

  • 数据更改时保存数据,或

  • 当用户告诉你时保存数据(例如,通过某种保存操作栏项目),或者

  • onPause()在调用您修改数据的活动时保存数据

于 2012-06-08T12:32:48.877 回答
5

你不应该使用这个功能。

此方法用于模拟过程环境。它永远不会在生产 Android 设备上调用,在这些设备上,只需杀死进程即可删除它们;这样做时不会执行任何用户代码(包括此回调)。

资源

于 2016-12-19T20:21:38.107 回答
0

您也可以在 onPause() 中执行此操作,具体取决于您的需要。在这种情况下,它会在您的应用每次失去焦点时保存。

于 2012-06-08T12:30:17.283 回答