【问题标题】:How to restart my app in the activity that was running before system kills it android?如何在系统杀死它之前运行的活动中重新启动我的应用程序?
【发布时间】:2023-03-27 10:37:01
【问题描述】:

我的应用程序的用户大部分时间在后台运行它。经过很长一段时间后,系统会终止我的应用程序,当他们尝试进入我的应用程序时,它会重新开始。我怎样才能找回我的最后一点应用程序被杀死之前?

【问题讨论】:

  • “最后一点”是什么意思?你能不能把重要信息保存在onDestroy方法中的文件中,然后在应用程序再次启动时调用这些信息?

标签: android android-activity activity-lifecycle


【解决方案1】:

您可以对此类任务使用共享首选项。

在您的 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
}

有关共享偏好的更多信息,请参阅此处的官方文档:http://developer.android.com/guide/topics/data/data-storage.html#pref

**这是在一篇名为“App kill Android 后恢复”的类似帖子上Here

答案属于 - Anup Cowkur**

【讨论】:

  • onStop() 和 onDestroy() 不能保证被调用。
【解决方案2】:

您拥有的唯一保证是当 Activity 进入后台时将调用 onPause()。在 Android 杀死您的应用之前,无法保证会调用 onStop() 或 onDestroy()。您可以做的是将应用的状态、设置、重要数据等写入 SharedPreferences 文件或数据库,然后在 onResume() 中检索。

【讨论】:

    【解决方案3】:

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

    【讨论】:

    • onDestroy() 不能保证被调用。在 onPause() 之后的任何时候,应用程序都可以在没有通知的情况下被杀死。当然,实际的错误会随时将其删除。
    • 这不起作用 - Android 文档说不能保证调用 onDestroy()
    • 然后覆盖onPause()。改变了我的答案。
    猜你喜欢
    • 1970-01-01
    • 2015-07-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多