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

Я работаю над музыкальным приложением, и я хочу остановить службу, когда пользователь удаляет приложение из недавнего списка, а не когда первое действие уничтожается (потому что когда пользователь нажимает обратно, пока приложение не минимизирует, в этом случае сначала активность также разрушается). Пожалуйста, помогите.

Ответ 1

Я хочу остановить службу, когда пользователь удаляет приложение из недавний список.

Да, вы можете сделать это, используя флаг stopWithTask как true для службы в файле манифеста.

Пример:

<service
    android:enabled="true"
    android:name=".MyService"
    android:exported="false"
    android:stopWithTask="true" />

ИЛИ

Если вам нужно удалить событие из недавнего списка и сделать что-то до остановки службы, вы можете использовать это:

<service
    android:enabled="true"
    android:name=".MyService"
    android:exported="false"
    android:stopWithTask="false" />

Таким образом будет вызван ваш метод обслуживания onTaskRemoved. (Помните, что он не будет вызываться, если вы установите stopWithTask на true).

public class MyService extends Service {

    @Override
    public void onStartService() {
        //your code
    }

    @Override
    public void onTaskRemoved(Intent rootIntent) {
        System.out.println("onTaskRemoved called");
        super.onTaskRemoved(rootIntent);
        //do something you want
        //stop service
        this.stopSelf();
    }
}

Надеюсь, что это поможет.

Ответ 2

Я публикую этот ответ, так как выбранное как лучшее решение не работает для меня.

Это обновленная версия:

Сначала создайте этот класс обслуживания:

 public class ExitService extends Service {


    @Nullable
    @Override
    public IBinder onBind(Intent intent) {
        return null;
    }

    @Override
    public void onTaskRemoved(Intent rootIntent) {
        System.out.println("onTaskRemoved called");
        super.onTaskRemoved(rootIntent);
        //do something you want before app closes.
        //stop service
        this.stopSelf();
    }
}

Затем объявите таким образом свой сервис в метке манифеста:

<service
            android:enabled="true"
            android:name=".ExitService"
            android:exported="false"
            android:stopWithTask="false" />

Теперь просто запустите службу там, где вы хотите что-то сделать, перед закрытием приложения.

 Intent intent = new Intent(this, ExitService.class);
        startService(intent);