【问题标题】:Restoring state in Android when using the 'up' button使用“向上”按钮时在 Android 中恢复状态
【发布时间】:2013-05-03 08:11:04
【问题描述】:

我正在使用onSaveInstanceState() 存储一个ArrayList 成员变量,并在主活动的onCreate() 方法中恢复它。这在大多数情况下都有效,例如旋转屏幕等,但是如果我打开一个新活动并使用“向上”按钮(而不是后退按钮)导航回主屏幕,它似乎会创建一个新的主活动而不通过onCreate() 中的状态包。

我已经确认,当按下向上按钮时,会为主要活动的原始实例调用 onDestroy() 方法,这对我来说毫无意义,因为我希望它恢复现有活动,就像我按下了返回一样按钮而不是创建一个新按钮。

有没有一种方法可以强制新活动恢复旧活动或仅恢复现有活动?

【问题讨论】:

  • 感谢您的快速回复,我在这篇文章后立即发生了篮球事故,然后忘记了它,直到我今天重新开始这个项目! :S

标签: android android-activity android-lifecycle


【解决方案1】:

尝试在清单中将主要活动的启动模式设置为 singleTop:

<activity android:name="activityName" android:launchMode="singleTop" ... />

【讨论】:

  • 这应该意味着当您按下向上按钮时活动不会被破坏,因此(在这种情况下)您不需要 savedInstanceState - 当系统破坏您的活动以重新获得一些资源时(离开它之后),它将使用 sIS 包。在 ICS+ 调试设置中打开“不保留活动”以模仿这一点
  • 我很想解释一下“singleTop”的作用。
【解决方案2】:

你试过用吗:

 Intent i = new Intent(this, MainScreenActivity.class);
  i.setFlags(Intent.FLAG_CLEAR_TOP);
 startActivity(i);
  finish();

此代码应在按下向上按钮时调用。

【讨论】:

  • 我试过这个方法,但它没有用,虽然我同意它应该来自 FLAG_CLEAR_TOP 的描述
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-08-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-03-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多