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