如何使用onTerminate()方法,android?

时间:2012-06-08 12:18:14

标签: android

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

4 个答案:

答案 0 :(得分:5)

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

在任何情况下,都无法保证会调用onDestroy()。如果操作系统决定终止你的进程,它就不会在任何活动上调用onDestroy()。

答案 1 :(得分:3)

你不应该使用这个功能。

  

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

Source

答案 2 :(得分:2)

  

我希望当应用程序结束时存储这些变量。

这不起作用,因为当“应用程序结束”时你无法控制。

或者:

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

  • 在用户告诉您(例如,通过某种保存操作栏项目)或

  • 时保存数据
  • 在调用数据的活动的onPause()被调用时保存数据

答案 3 :(得分:0)

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