Где мне отменить регистрацию BroadcastReceiver, если я намерен получать трансляции, даже когда приложение находится в фоновом режиме?

Для моей цели мне нужно слушать трансляции CONNECTIVITY_CHANGE, пока приложение работает (передний план или фон).

Если я отменяю регистрацию в методе onDestroy(), я теряю приемник, если возвращаюсь к первому действию, поскольку первое действие выводится наверх.

Если я отменю регистрацию в onPause(), я не смогу прослушать изменения, когда приложение работает в фоновом режиме, но не убито.

Это приводит к утечке информации о намерениях получателя, когда приложение принудительно уничтожается.

Каким было бы идеальное решение для моего случая?

Заранее спасибо :)


person Pratik Kapoor    schedule 12.05.2017    source источник
comment
developer.android.com/topic/performance/   -  person ianhanniballake    schedule 12.05.2017


Ответы (1)


Если приложение принудительно остановлено, оно будет просачиваться независимо от того, что вы делаете. Когда вы принудительно остановлены, у вас нет возможности отменить регистрацию.

Но в более широком смысле вашего вопроса — если вам нужно место для регистрации долгосрочного получателя, а затем отмены его регистрации, ответ — в Сервисе.

person Gabe Sechan    schedule 12.05.2017
comment
Спасибо за эту информацию, безусловно, направил меня в правильном направлении. Не нашел этого в других ответах. С точки зрения временного обходного пути, насколько опасна утечка намерений? Есть ли побочные эффекты? - person Pratik Kapoor; 12.05.2017
comment
Не очень вредно. Есть 2 реальных сценария, когда происходят эти утечки: вам все еще нужен ресивер, и вас принудительно закрыли. В этом случае никакого вреда. Или вам не нужен приемник, и вы должны были отменить его регистрацию в прошлом. В этом случае ваше приложение не пострадало, но ваше приложение использовало ресурсы, которые ему не нужны для обработки событий на этом приемнике. Вред - это потраченные впустую циклы процессора и часть заряда батареи. Так что вред минимальный. - person Gabe Sechan; 12.05.2017
comment
Отлично, это решает мою проблему. Буду больше читать об услугах и пробовать их для моего варианта использования. Большое спасибо! - person Pratik Kapoor; 12.05.2017