4

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

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

4

2 回答 2

4

如果您查看LocalBroadcastManager源代码,您会发现它实际上只是一个普通类(如您所说的“本地”),Map将各种BroadcastReceiver与对应ListIntentFilter.

没有在“系统级别”注册任何内容,所以NO:如果应用程序被杀死,LocalBroadcastManager 类也会随之被杀死,并且不会发生泄漏

于 2013-09-29T10:46:54.460 回答
0

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

于 2013-06-27T17:28:37.677 回答