【问题标题】:onSaveInstanceState()/onRestoreInstanceState() in large application大型应用程序中的 onSaveInstanceState()/onRestoreInstanceState()
【发布时间】:2012-10-25 21:03:39
【问题描述】:

我有一个复杂的应用程序:一个 Application 类和一堆 Activity 类,它们从一个普通 Activity 的 Intent 开始。

根据日志,进程正在死亡。当我运行我的应用程序,回家,启动一大堆其他应用程序然后返回我的应用程序时,就会发生这种情况。

在日志中,我看到:

10-25 12:11:08.195:I/ActivityManager(2492):进程 my.awesome.app (pid 20860) 已死亡。

my.awesome.app 然后在应用重新启动时通过主 Activity 的 onCreate() 方法。

但是,我最终进入了错误的屏幕,因为将我引导至正确屏幕的实例变量没有保留应用程序终止时的值。实际上,我希望应用程序不会死,因为它被系统杀死然后又恢复了生命。

查看代码,我没有看到 onSaveInstanceState()/onRestoreInstanceState() 方法,所以我很确定我需要提供它们。

问题是哪些Activity 需要提供onSaveInstanceState()/onRestoreInstanceState()/react 来对他们所做的事情做出反应?

假设我有几个 Activity,也就是说,我的 Application 类已经启动了一个 Activity 类,它启动了一个 Thread 来运行一个 Activity,并且它本身正在通过一个 Intent 运行另一个 Activity。

是否所有涉及的类都需要提供/响应 onSaveInstanceState()/onRestoreInstanceState()?是否只是 Application 类,因为我在其中检测到将我发送到错误屏幕的不正确值?

【问题讨论】:

    标签: android


    【解决方案1】:

    onSave/onRestoreInstanceState 并不是真正适用于应用程序范围的设置。更多的是针对单个活动的设置。

    如果您总是想在进程被终止后返回某个活动,您可能应该将上次打开状态保存到首选项中,然后在主启动器活动的 onCreate 中,根据已保存首选项的值。

    【讨论】:

      猜你喜欢
      • 2011-05-05
      • 1970-01-01
      • 2012-10-01
      • 1970-01-01
      • 2014-01-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多