Невозможно повторно привязать к одному и тому же сервису

Я создаю приложение таймера. Таймер запускается на службе и обновляет пользовательский интерфейс. Приложение запускает сервис внутри onCreate().

getApplication().startService(intentService);
getApplication().bindService(intentService, serviceConnection, Context.BIND_AUTO_CREATE);

Оно работает. За исключением того, что это не так. Конкретно об изменениях конфигурации.

Я знаю, что вызывающее действие уничтожается (onDestroy) и затем воссоздается, снова вызывается onCreate и... bindService () должен связываться с тем же сервисом. Я называю это с тем же самым Намерением, тем же serviceConnection, из того же самого (прикладного) контекста.

Это не так. Это как-то привязывается к новому сервисному объекту. (Я вижу это в отладчике, объект, возвращаемый в действие, отличается). Это сломает мой таймер.

Мне интересно, что, когда я выхожу из действия и повторно вводю его через Уведомление (это приоритетный сервис, и уведомление приводит вас к той же активности), снова вызывается onCreate (), startService и bindService, но в этот раз это каким-то образом может правильно привязать к работающему Сервису.

Что мне не хватает?

РЕДАКТИРОВАТЬ: Вот основные части кода службы:

public class MyService extends IntentService {
    // variables ...
    public MyService() { super("MyService"); }
    protected void onHandleIntent(@Nullable Intent intent) {
         if (!hasStarted) {
              initializeTimer();
              startTimer();
         }
    }

    public IBinder onBind(Intent intent) {
         return new RecordBinder(this);
    }

    public void onDestroy() {
          super.onDestroy();
          if (timer != null)
              timer = null;
    }
    // there are also a bunch of private methods and stuff...
}

0 ответов

Другие вопросы по тегам