Как отменить любой / весь запрос менеджера работ, если приложение удалено прямо из панели задач? - PullRequest
1 голос
/ 07 мая 2019

Я пытаюсь использовать Android WorkManager в приложении, чтобы запланировать некоторую фоновую задачу. Требуется отменить запрос API, когда приложение удаляется непосредственно из панели приложений.

Я могу определить, удаляется ли приложение из панели задач, с помощью метода Service -> onTaskRemoved. И здесь я делаю запрос на отмену API WorkManager.

public void onTaskRemoved(Intent rootIntent) {
    super.onTaskRemoved(rootIntent);
    Log.d("onTaskRemoved","onTaskRemoved called");
    WorkManager.getInstance().cancelAllWork();
}

Это работает нормально, как и ожидалось. Пожалуйста, предложите, если есть какая-либо другая лучшая альтернатива для достижения этого.

Ответы [ 2 ]

1 голос
/ 08 мая 2019

Если вам нужно сделать это, я думаю, вы, вероятно, используете не тот инструмент. WorkManager специально для запросов, которые необходимо сохранить и выполнить в какой-то момент. Попробуйте вместо этого использовать Executor или сопрограмму.

1 голос
/ 07 мая 2019


Для некоторых android-устройств (для некоторых поставщиков) они реализованы так, как если бы какие-либо приложения были удалены из панели приложений, значит, они принудительно остановят приложение. Так что сервисы,Диспетчер работы также останавливается.


Для некоторых других устройств Android (для некоторых других поставщиков) они реализованы так, как если бы любое приложение было удалено из панели приложений, значит, они остановятся/ уничтожить только текущую активность приложения и не принудительно останавливать приложение . Так что службы, менеджер работ не останавливаются.
Сначала вам нужно проверить, к какой категории относятся ваши целевые устройства.

...