2010-01-13 68 views
9
保持任务的活动堆栈重启后

我的应用程序有两个活动,我在这个顺序启动:安卓:从家里

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> 

我该怎么办?

+0

你确定你得到A而不是B,或者你的'android:label'是'.activity.B'在问题中的拼写错误? – 2010-01-13 23:49:58

+0

啊,这是一个.activity.B标签的错字(只是固定的)。我仍然看到A,而期望B. – alex2k8 2010-01-14 00:12:15

+1

你想要的是标准行为,所以也许在别处有一些小的错字或错误。在测试之前尝试“退出”应用程序,即启动应用程序并向后按,直到堆栈清除,然后重新启动? – James 2010-01-14 00:39:24

回答

10

我想通了,什么是错的...

的配置是正确的,但我开始应用调试从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) 
+0

啊,有趣!已经有很多在过去两天这样的问题,所以也许这对他们中的一些:) – 2010-01-14 00:57:29

+0

请注意,此行为已固定在0.9.6版本的ADT的Eclipse插件的答案。您现在可以高兴地从Eclipse启动您的应用程序,并获得与设备上相同的行为。 – 2010-03-14 14:48:04

+0

谢谢你的信息,克里斯托弗! – alex2k8 2010-03-16 13:51:56

2

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

尽管他们说(没选中)已经固定在0.9.6版本的ADT Eclipse插件我仍然可以在应用程序OTA升级过程中看到这个真实的设备上。至少这发生在Android 1.6,2.0.1,2.1和2.2上。

我们已经创造了这个问题的解决方法。检查出来here

1

它并不复杂。你只需要操纵清单。

AndroidManifest.xm

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

阅读有关 '机器人:出口' & '的Android版本:alwaysRetainTaskState' 在这里:

android:exported

android:alwaysRetainTaskState