android:alwaysRetainTaskState = false не соблюдается, состояние задачи всегда сохраняется
Я хотел бы, чтобы мое приложение демонстрировало поведение по умолчанию, описанное для android:alwaysRetainTaskState
в документации Android:
Обычно система очищает задачу (удаляет все действия из стека выше корневого действия) в определенных ситуациях, когда пользователь повторно выбирает эту задачу на главном экране. Как правило, это делается, если пользователь не посещал задание в течение определенного времени, например 30 минут.
Это не то, что я вижу. Даже после>1 дня повторный запуск моего приложения с помощью значка запуска возвращает пользователя туда, где он его оставил. Например, после новой установки мое приложение отображает активность на домашнем экране H при запуске. Затем пользователь переходит к подробным действиям: H -> J. При повторном запуске через долгое время я бы хотел, чтобы пользователь увидел H, но вместо этого он увидел J.
Эти флаги установлены для моей активности в AndroidManifest.xml:
<activity
android:name=".AppHomeScreen"
android:label="@string/app_name"
android:alwaysRetainTaskState="false"
android:launchMode="singleTop"
android:windowSoftInputMode="stateUnchanged">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
Я использую Android KitKat 4.4.2.
Есть ли какая-то причина, по которой я не вижу ожидаемого поведения здесь? Я знаю, что я мог бы установить android:clearTaskOnLaunch
или же android:finishOnTaskLaunch
чтобы очистить задачу каждый раз, когда пользователь покидает приложение, но это слишком агрессивно, я хотел бы описать поведение, когда состояние забыто только после длительного периода бездействия.
(Документация Android, похоже, не гарантирует такого поведения, только то, что задача очищается в "определенных ситуациях" и "через определенное время, например, 30 минут". Возможно, поведение по умолчанию было изменено, и документы Android отсутствуют даты?)
1 ответ
Это поведение зависит от производителя / поставщика. На разных устройствах вы увидите разное поведение. Есть устройства, которые агрессивно убирают задачи и другие, которые сохраняют состояние задачи в течение намного более длительных периодов времени.