#android #activity #service
Из Активити запущен сервис, в котором запускается таймер. Когда таймер закончит отсчет, нужно проверить, запущено ли Активити (за это время пользователь может его закрыть, может не закрыть, может закрыть и снова открыть). В зависимости от этого, либо сервис сам останавливается, либо в Активити передается сообщение о том, что нужно нажать кнопку остановки. У меня для того ,что бы сервис знал о состоянии Активити, оно отправляет ему сообщения startService(new Intent(this, MyService.class).putExtra("Mode", 0[1])); каждый раз при запуске и при закрытии. Вопрос: Есть ли более эффективный метод проверки из сервиса, запущено ли породившее его Активити? Если нет, откуда лучше отправлять сообщение startService ( OnCreate/OnDestroy, OnResume/OnPause)?
Ответы
Ответ 1
При завершении работы отправьте уведомление в активити (бродкастом или через EventBus) и создайте задачу через 2 секунды остановить сервис. Из активити при получении уведомления отправляйте подтверждение. Сервис, при получении подтверждения может отменить задачу остановки самого себя. Отсутствие подтверждения считайте отсутствием активити.Ответ 2
Как вариант запустить Bound Service и при вызове Activity.onDestroy() известить Service о своей гибели. Так что к моменту завершения сервиса у него всегда будет информация о том жив ли Activity, который его запустил.
Комментариев нет:
Отправить комментарий