本地管理的广播接收器泄漏?

时间:2013-06-27 17:26:24

标签: android memory-leaks broadcastreceiver localbroadcastmanager

当应用程序被系统杀死时,本地(即使用LocalBroadcastManager管理)BroadcastReceiver是否可能泄漏?

我需要它的具体用例是我想在Activity的onCreate / onDestroy中注册/取消注册BroadcastReceiver(当活动不可见时我需要接收器处于活动状态),但我不会喜欢冒这个风险导致内存泄漏。据我了解,如果系统销毁了单个活动,则onDestroy运行并且接收器未注册。如果应用程序被杀了怎么办?接收器是否仍然存在,或者是本地的,是否会随应用程序一起被杀死?

2 个答案:

答案 0 :(得分:4)

如果你偷看LocalBroadcastManager source code,你会发现它只是一个普通的课程(正如你所说的“本地”),Map将各种BroadcastReceiver连接到相应的{ {1}}的{​​1}}。

在“系统级别”没有注册任何内容,因此 NO:如果应用程序被杀死,则使用它杀死LocalBroadcastManager类并且不会发生泄漏

答案 1 :(得分:0)

你应该在onDestroy中取消注册它,因为onDestroy并不意味着你的应用程序已经完成 - 只是你的活动。您的应用中的其他活动可能仍在运行,因此接收器会导致泄漏。