Как вызвать событие, когда приложение удалено из списка последних в Android

Я хочу перезапустить свое приложение, когда оно будет удалено из недавнего списка. Я добавил код перезапуска в onDestroy() метод. Работает нормально в Android 7 и выше. Но на Android 6 и более старых версиях это не работает. onDestroy() метод вызывается только при нажатии кнопки назад.

1 ответ

onDestroy() не вызывать это вполне очевидное поведение. Когда пользователь выполняет смахивание с недавних задач, приложение немедленно убивается без вызова методов жизненного цикла. Если вы изучите документацию onDestroy(), вы найдете:

Примечание: не рассчитывайте, что этот метод вызывается как место для сохранения данных! Например, если действие редактирует данные в поставщике контента, эти изменения должны быть зафиксированы либо в onPause(), либо в onSaveInstanceState(Bundle), а не здесь. Этот метод обычно реализуется для освобождения ресурсов, таких как потоки, которые связаны с действием, так что уничтоженное действие не оставляет таких вещей, пока остальная часть его приложения все еще работает. Существуют ситуации, когда система просто убивает процесс хостинга действия, не вызывая этот метод (или любой другой) в нем, поэтому его не следует использовать для выполнения действий, которые должны остаться после завершения процесса.

Но есть обходной путь.

Посетите ЭТОТ ответ Stackru, если вы хотите обработать событие уничтожения задачи на уровне API ниже 26. Это будет работать наверняка.