当应用程序被系统杀死时,本地(即使用LocalBroadcastManager管理)BroadcastReceiver是否可能泄漏?
我需要它的具体用例是我想在Activity的onCreate / onDestroy中注册/取消注册BroadcastReceiver(当活动不可见时我需要接收器处于活动状态),但我不会喜欢冒这个风险导致内存泄漏。据我了解,如果系统销毁了单个活动,则onDestroy运行并且接收器未注册。如果应用程序被杀了怎么办?接收器是否仍然存在,或者是本地的,是否会随应用程序一起被杀死?
答案 0 :(得分:4)
如果你偷看LocalBroadcastManager
source code,你会发现它只是一个普通的课程(正如你所说的“本地”),Map
将各种BroadcastReceiver
连接到相应的{ {1}}的{1}}。
在“系统级别”没有注册任何内容,因此 NO:如果应用程序被杀死,则使用它杀死LocalBroadcastManager类并且不会发生泄漏。
答案 1 :(得分:0)
你应该在onDestroy中取消注册它,因为onDestroy并不意味着你的应用程序已经完成 - 只是你的活动。您的应用中的其他活动可能仍在运行,因此接收器会导致泄漏。