У меня есть класс Base Activity для реализации общего поведения для всех Activity. Все они расширяют эту BaseActivity.
Я привязываюсь к службе в методе onStart BaseActivity и отменяю привязку условно в методе onStop. Условно я имею в виду, что в зависимости от некоторого параметра, выбранного пользователем, служба должна или не должна работать в фоновом режиме, когда приложение переходит в фоновый режим.
Проблема в том, что иногда служба продолжает работать, хотя не должна (это когда опция для ее уничтожения включена и фактически вызывается unbindService ()).
Я думаю, что при каждом изменении Activity служба отключается и снова привязывается. Поскольку привязанные службы подсчитываются по ссылкам, возможно, моя служба связана больше раз, чем несвязанная, поэтому она продолжает работать в конце, даже когда я вызываю unbindService ().
Кроме того, в документации кое-что говорится об этом:
Обычно вы должны сочетать привязку и отмену привязки во время сопоставления моментов включения и отключения в жизненном цикле клиента. Например:
Если вам нужно взаимодействовать со службой только тогда, когда ваша активность видна, вам следует выполнить привязку во время onStart () и отменить привязку во время onStop ().
Если вы хотите, чтобы ваша активность получала ответы, даже когда она остановлена в фоновом режиме, вы можете выполнить привязку во время onCreate () и отменить привязку во время onDestroy (). Помните, что это означает, что ваша деятельность должна использовать службу все время, пока она работает (даже в фоновом режиме), поэтому, если служба находится в другом процессе, вы увеличиваете вес процесса, и становится более вероятным, что система будет убей это.
Поскольку я как бы пытаюсь реализовать оба варианта, как лучше всего реализовать это?