Я работаю над музыкальным приложением, и я хочу остановить службу, когда пользователь удаляет приложение из недавнего списка, а не когда первое действие уничтожается (потому что когда пользователь нажимает обратно, пока приложение не минимизирует, в этом случае сначала активность также разрушается). Пожалуйста, помогите.
Как обнаружить приложение, удаленное из недавнего списка?
Ответ 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);