Почему бы не выполнить unregisterReceiver(BroadcastReceiver) во время уничтожения активности, что вызовет утечку памяти?

Я знаю, что невыполнение unregisterReveiver(BroadcastReceiver) приведет к утечке памяти при уничтожении Activity. Но я не понимаю, почему это приводит к утечке памяти.

Я регистрирую приемник в действии с помощью LocalBroadcastManager. Несмотря на то, что действие уничтожено, BroadcastReceiver будет содержать контекстную ссылку?


person Ilanthirayan Paramanathan    schedule 14.12.2016    source источник


Ответы (1)


Я предполагаю, что LocalBroadcastManager хранит экземпляр BroadcastReceiver.

Итак, когда активность уничтожена, BroadcastReceiver устарел и должен быть разрегистрирован, чтобы его можно было очистить.

Не выполняя unregisterReceiver(BroadcastReceiver), бесполезный BroadcastReceiver сохраняется, и это вызывает утечку памяти.

Если действие будет остановлено x раз, произойдет утечка x BroadcastReceiver.

person Yves Delerm    schedule 14.12.2016