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