Невозможно повторно привязать к одному и тому же сервису - PullRequest
0 голосов
/ 29 сентября 2018

Я создаю приложение таймера.Таймер работает на службе и обновляет пользовательский интерфейс.Приложение запускает службу внутри 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...
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...