2016-11-26 4 views
0

Я регистрирую свои приемники вещания в манифесте. Я хотел бы знать, когда радиоприемник может быть незарегистрирован системой или убийцей задачи (некоторые из них поставляются с системой)Когда вещательный приемник может быть незарегистрирован

На старшей версии Android кажется, что если вы принудительно остановите приложение, то его широковещательные приемники не будут дольше вызывается. Я тестировал это на Android 6 или 7, и вызывается приемники (вы заставляете закрыть приложение, на минуту вы не получаете никаких вызовов, но после этого кажется, что ваше приложение снова возвращается к жизни)

На телефонах Xiaomi ваши широковещательные приемники не будут вызваны, если AutoStart не включен.

Есть ли другие случаи, которые я должен знать? Если да, то каково было бы решение этой проблемы?

Благодаря

ответ

0

Использование unregisterReceiver (BroadcastReceiver приемника) в вашем OnPause(), чтобы отменить приемник вещания. Для службы: удалите тег приемника из файла манифеста. Затем вы можете зарегистрировать приемник Broadcast с помощью того же метода в onCreate() и отменить регистрацию в onDestroy().

+0

Дело в том, что мой ресивер будет зарегистрирован. почему я должен отменить регистрацию моего получателя? :) – user1611597

1

вы можете использовать unRegister (ваш широковещательный приемник) в onDestroy() метод переопределения. Таким образом, он будет отменить регистрацию, когда когда-либо ваше приложение будет уничтожено. На ваш вопрос, почему отменить регистрацию вещательного приемника, это потому, что если вы его не отменили, то это приведет к утечке памяти. Лучшая практика кодирования - это отменить регистрацию получателя.