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' здесь:

андроид: экспортироваться

андроид: alwaysRetainTaskState

Другие вопросы по тегам