Как сохранить 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()