Android 如何在系统终止之前运行的活动中重新启动我的应用程序?

Android 如何在系统终止之前运行的活动中重新启动我的应用程序?,android,android-activity,activity-lifecycle,Android,Android Activity,Activity Lifecycle,我的应用程序的用户大部分时间都在后台运行。经过很长一段时间后,系统会关闭我的应用程序,当他们尝试进入我的应用程序时,它会重新启动。在我的应用程序被关闭之前,我如何检索它的最后一点?覆盖活动。onPause()并在其中放入一些保存到数据库或SharedReference当前活动的类名的代码。然后从您的主要活动中,从数据库或SharedReference中读回数据,并启动相应的活动。您可以使用共享首选项执行类似的任务 在onStop()函数中,在共享首选项中设置一个标志,如: SharedPrefe

我的应用程序的用户大部分时间都在后台运行。经过很长一段时间后,系统会关闭我的应用程序,当他们尝试进入我的应用程序时,它会重新启动。在我的应用程序被关闭之前,我如何检索它的最后一点?

覆盖
活动。onPause()
并在其中放入一些保存到数据库或
SharedReference
当前活动的类名的代码。然后从您的主要活动中,从数据库或
SharedReference
中读回数据,并启动相应的活动。

您可以使用共享首选项执行类似的任务

在onStop()函数中,在共享首选项中设置一个标志,如:

SharedPreferences.Editor editor = getPreferences(MODE_PRIVATE).edit();
editor.putString("killed", "yes");
在onStart()中,检索首选项并按如下方式进行检查:

SharedPreferences prefs = getPreferences(MODE_PRIVATE); 
String flag = prefs.getString("killed", null);

if(flag!=null && flag.equals("yes")
{
//activity is resumed
}
else
{
//activity is started from scratch
}
有关共享首选项的更多信息,请参见此处的官方文档:

**这是一篇类似的帖子,名为“应用程序杀死Android后恢复”


答案属于-Anup Cowkur**

您唯一的保证是当活动进入后台时,onPause()将被调用。在Android杀死你的应用程序之前,不能保证会调用onStop()或onDestroy()。您可以将应用程序的状态、设置、重要数据等写入SharedReferences文件或数据库,然后在onResume()中检索它。

您所说的“最后一点”是什么意思?您能否将重要信息保存在
ondestory
方法中的文件中,并在再次启动应用程序时调用这些信息?不能保证调用中的ondestory()。在onPause()之后的任何时候,应用程序都可以在没有通知的情况下被终止。当然,一个实际的错误会在任何时候将其记录下来。这是行不通的-Android文档中说,在override
onPause()
时不能保证调用onDestroy()。更改了我的答案。onStop()和onDestroy()不保证被调用。