Если у меня есть приложение, которое не выполняет никаких действий, только один широковещательный приемник BOOT_COMPLETED и самый простой сервис. Получатель просто запустит службу, а служба запустит следующий код:
public class ScreenStateService extends Service {
@Override
public IBinder onBind(Intent arg0) {
// TODO Auto-generated method stub
return null;
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
return START_STICKY;
}
@Override
public void onCreate() {
super.onCreate();
}
}
Как я понимаю, служба будет работать до конца времени или до тех пор, пока не произойдет один из следующих сценариев:
- Недостаточно памяти: системе не хватает памяти, поэтому она решает остановить службу.
- ANR
- Пользователь вручную останавливает приложение или отключает его.
В 1 и 2 система снова запустит службу, если память больше не будет заполняться или после обработки ошибки. В случае 3 он не запустится снова.
Вопрос в следующем: верно ли это? Есть ли другие случаи, когда служба была бы остановлена внешним источником? Пожалуйста, укажите, будет ли он снова запускаться автоматически, если таковые имеются.