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 ответ

Решение

Это поведение зависит от производителя / поставщика. На разных устройствах вы увидите разное поведение. Есть устройства, которые агрессивно убирают задачи и другие, которые сохраняют состояние задачи в течение намного более длительных периодов времени.

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