【问题标题】:Android: keep task's activity stack after restart from HOMEAndroid:从HOME重启后保留任务的活动堆栈
【发布时间】:2011-01-04 21:23:57
【问题描述】:

我的应用程序有两个活动,我按以下顺序启动:

HOME > A > B

现在我按 HOME 并再次启动“A”。我想在“A”的顶部看到活动“B”,但我得到的是“A”——所以活动堆栈被清除了。

清单:

<activity android:name=".activity.A" android:label="A" android:alwaysRetainTaskState="true">
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
</activity>

<activity android:name=".activity.B" android:label="B">
    <intent-filter>
    </intent-filter>
</activity>

我该怎么办?

【问题讨论】:

  • 你确定你得到的是 A 而不是 B,还是你的 android:label.activity.B 是问题中的错字?
  • 啊,这是 .activity.B 标签的错字(刚刚修复)。我仍然看到 A 而期待 B。
  • 您想要的是标准行为,因此其他地方可能存在一些小错字或错误。在测试之前尝试完全“退出”应用程序,即启动它并按回直到堆栈清除,然后重新启动?
  • 比你们的帮助,你们给了我信心:-)

标签: android activity-stack


【解决方案1】:

我发现出了什么问题……

配置是正确的,但是我从 Eclipse 启动了调试应用程序,这就是问题所在。

案例#1。

Debug > A > B > HOME > A
Get: A (stack is cleared)

案例#2。

Debug > A > BACK > A > B > HOME > A
Get: B (stack preserved)

案例#3。

A > B > HOME > A
Get: B (stack preserved)

【讨论】:

  • 啊,有趣!在过去的一两天里有很多这样的问题,所以也许这就是其中一些人的答案:)
  • 请注意,此行为已在 Eclipse 的 ADT 插件的 0.9.6 版本中得到修复。您现在可以愉快地从 Eclipse 启动您的应用程序并获得与在设备上相同的行为。
【解决方案2】:

我们发现这是一个已知的 Android 问题 - 已正式跟踪 herehere

尽管他们说(未检查)它已在 ADT Eclipse 插件的 0.9.6 版本中得到修复,但我仍然可以在应用程序 OTA 升级期间在真实设备上看到这一点。至少 Android 1.6、2.0.1、2.1 和 2.2 会发生这种情况。

我们已针对此问题创建了解决方法。看看here

【讨论】:

    【解决方案3】:

    没那么复杂。您只需要操作清单。

    AndroidManifest.xm

    <activity
         android:name=".MainActivity"
         android:alwaysRetainTaskState="true"
         android:exported="true"
         .
         .
         .
    

    在此处了解“android:exported”和“android:alwaysRetainTaskState”:

    android:exported

    android:alwaysRetainTaskState

    【讨论】:

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