【问题标题】:Android Activity lifecycle, restarting app instead of restart activityAndroid Activity 生命周期,重启应用而不是重启 Activity
【发布时间】:2015-05-23 14:37:21
【问题描述】:

我最近开发了一个 Android 应用。一切顺利,直到我按下设备上的主页键。 在我的一台设备(内存更多)上,活动以正确的状态恢复,我的应用程序运行良好。但是在其他设备上,活动会在几秒钟后终止,当我恢复应用程序时,它会重新启动我使用默认值(不正确的行为)留下的活动。 如何强制应用从主活动重新启动应用,而不是使用默认值重新启动此活动?

【问题讨论】:

  • 您能发布您的onPause()onDestroy() 代码吗?
  • 在 onPause() 上,它只显示一个对话框,并没有实现 onDestroy()。
  • 在您的 onPause() 中,您将不得不保存您的值(例如共享首选项),并在 onCreate() 中检查 sharedPreferences 是什么并加载它们?。
  • 是的,这是一种方法,但很难实现,因为我有超过 50 个值要保存和恢复,我只是想阻止加载这个活动,我想从主要活动启动应用程序!
  • How can I force app to restart app from main activity instead of restart this activity with default values? 这是什么意思?

标签: android android-activity android-lifecycle restart


【解决方案1】:

尝试在Manifest.xml 中为您的活动设置android:alwaysRetainTaskState="true" 根据文档

Activity所处的任务状态是否会 始终由系统维护——如果是,则为“true”,否则为“false” 如果允许系统将任务重置为其初始状态 某些情况。默认值为“假”。这个属性是 仅对任务的根活动有意义;所有人都忽略了它 其他活动。通常,系统会清除一个任务(删除所有 根活动上方的堆栈中的活动)在某些 用户从主屏幕重新选择该任务的情况。 通常,如果用户在一段时间内没有访问该任务,则会执行此操作 一定的时间,例如 30 分钟。

但是,当此属性为“true”时,用户将始终返回 无论他们如何到达那里,任务都处于最后状态。这是 有用,例如,在像 Web 浏览器这样的应用程序中 用户将有很多状态(例如多个打开的选项卡) 不喜欢输。

更多参考click here

【讨论】:

  • 我在问这个问题之前试过这个,但没有帮助。
【解决方案2】:

如果你使用 android:clearTaskOnLaunch="true",完整的 backstack 将被清除。 您的应用程序将从头开始重新启动,这意味着应用程序的主要活动将被启动,如果您不存储数据,您将以默认值结束。

【讨论】:

    【解决方案3】:

    我终于得到了答案:

    我们必须在 onCreate() 的主要活动中设置一个全局静态变量,如果该变量在我们离开应用程序的活动中被重置为 null,则完成!

    【讨论】:

      猜你喜欢
      • 2023-03-14
      • 2013-07-10
      • 1970-01-01
      • 2013-04-06
      • 2019-02-02
      • 1970-01-01
      • 2015-05-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多