Как сохранить IntentService, даже когда приложение закрыто?
В моем приложении для Android я запускаю IntentService изнутри Activity, вызывая
startService(new Intent(this, MyService.class));
И это работает как шарм. Я могу перемещаться между Activies, нажмите кнопку "Домой", чтобы переключиться на другие приложения... и все еще работает. Но если я удалю свое приложение со своего экрана, моя служба будет остановлена. Как я могу избежать этого? Другими словами, как я могу сохранить свою службу, даже если мое приложение закрыто из последних приложений?
Мой код обслуживания выглядит следующим образом:
public class MyService extends IntentService {
public MyService() {
super("MyService");
}
@Override
protected void onHandleIntent(Intent intent) {
//Here I run a loop which takes some time to finish
}
}
Ответы
Ответ 1
IntentService не работает все время, но работает на базе Intent. Вы отправляете, скажем, команду (делать какое-то задание), используя Intent, и служба выполняет это задание и останавливается после этого, ожидая другого намерения.
Вы должны использовать обычный Service вместо IntentService для достижения своей цели. Сервис должен быть настроен как START_STICKY
.
Ответ 2
в вашем классе @Override
onStartCommand
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
// We want this service to continue running until it is explicitly
// stopped, so return sticky.
return START_STICKY;
}
Чтобы убить службу, вы можете использовать stopSelf()