Android: сохранить активность задания после перезагрузки из HOME
В моем приложении есть два действия, которые я запускаю в следующем порядке:
HOME > A > B
Теперь я нажимаю ДОМОЙ и снова запускаю "А". Я хотел бы видеть активность "B" на вершине "A", но вместо этого я получаю "A" - поэтому стек активности очищается.
Manifest:
<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>
Что я должен делать?
3 ответа
Я понял, что не так...
Конфигурация верна, но я запустил приложение для отладки из 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)
Мы обнаружили, что это известная проблема Android - она была официально отслежена здесь и здесь.
Несмотря на то, что они говорят (не проверяли), это было исправлено в выпуске 0.9.6 плагина ADT Eclipse, но я все еще вижу это на реальном устройстве во время обновления OTA приложения. По крайней мере, это происходит для Android 1.6, 2.0.1, 2.1 и 2.2.
Мы создали обходной путь для этой проблемы. Проверьте это здесь.
Это не так сложно. Вам просто нужно манипулировать манифестом.
AndroidManifest.xm
<activity
android:name=".MainActivity"
android:alwaysRetainTaskState="true"
android:exported="true"
.
.
.
Прочтите об 'android:exported' & 'android:alwaysRetainTaskState' здесь: