My application has two activities, that I start in this order:
HOME > A > B
Now I press HOME and launch "A" again. I would like to see activity "B" on a top of "A", but instead I get "A" - so the activity stack is cleared.
Manifest:
<activity android:name=".activity.A开发者_C百科" 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>
What should I do?
I figured out what is wrong...
The config is right, but I started application for debugging from Eclipse, this was the issue.
Case # 1.
Debug > A > B > HOME > A
Get: A (stack is cleared)
Case # 2.
Debug > A > BACK > A > B > HOME > A
Get: B (stack preserved)
Case # 3.
A > B > HOME > A
Get: B (stack preserved)
We have discovered this is a known Android issue - it has been officially tracked here and here.
Despite they say (did not checked) it has been fixed in the 0.9.6 release of the ADT Eclipse plugin I still can see this on a real device during the application OTA upgrade. At least this happens for Android 1.6, 2.0.1, 2.1 and 2.2.
We've created a workaround for this issue. Check it out here.
It's not that complex. You just need to manipulate the manifest.
AndroidManifest.xm
<activity
android:name=".MainActivity"
android:alwaysRetainTaskState="true"
android:exported="true"
.
.
.
Read about the 'android:exported' & 'android:alwaysRetainTaskState' here:
android:exported
android:alwaysRetainTaskState
精彩评论