Обслуживание приложения останавливается, когда телефон не заряжается

Моя активность запускает службу, позвонивstartservice(), Для упрощения моей задачи допустим, что служба будет счетчиком, а счетчик будет увеличиваться каждые 10 секунд.

Timer t_counter;
int counter = 0; 

@Override   
public int onStartCommand(Intent intent, int flags, int startId) {

    t_counter = new Timer();
    t_counter.schedule(new TimerTask() { 
        @Override
        public void run() {
            counter++;
            Log.d("counter: ",Integer.toString(counter));
        }}, 0, 10000);

    return Service.START_STICKY;
}   

Когда телефон заряжается, (или в режиме отладки - так как я вижуLogcat) сервис работает как положено. Примерно каждые 10 секундLogcat показывает информацию об отладке, когда приложение находится в фоновом режиме или нет. Но когда я отключил телефон, служба перестает работать через некоторое время. Событие, когда приложение (активность, запустившая сервис) активно. Обратите внимание, что служба не уничтожена, просто отложена или что-то в этом роде.

Потому что, когда я снова подключаю мобильный телефон, таймер продолжает работать, и значение счетчика увеличивается со значения, при котором я только что отключил телефон. Таким образом, если служба была уничтожена, то значение снова было бы нулевым. (также я отлаживаю жизненный цикл службы и не вижу,onStartCOmmand()onDestroy() был бы назван)

Я искал решения для этого, но я думаю, что я не нашел правильный ответ для этого поведения. Я знаю, что я должен использоватьAlarmManager вместо таймера. Или это также будет работать, если я поставлю сервиспередний план отstartForeground()или, может быть, отдельныйпроцесс решил бы эту проблему. Но я хотел бы знать, почему мое решение работает с зарядкой. Также, где я могу найти информацию об этом "холостой ход» состояние службы. (не выполняет расписания таймера, но не уничтожается) Спасибо!