我定义了一个BatteryInfo extends BroadcastReceiver
类。我在Activity onCreate()
中调用了一次构造函数。我在Activity.registerReceiver
的{{1}}注册了它。
我试图找出是否需要取消注册它和/或设置其对onCreate()
的引用,以便允许我的Activity死亡而不会泄漏内存或堵塞系统中的意图发送者,或者是否系统优雅地自行抛出与此相关的所有内容。为此,我正在思考我读到的BroadcastReceiver Lifecycle:
这是什么意思?显然,我使用BroadcastReceiver对象仅在对onReceive(Context,Intent)的调用期间有效。一旦您的代码从此函数返回,系统会认为该对象已完成且不再有效。“
null
创建并在new BatteryInfo()
注册的对象在我的活动持续的整个过程中持续存在。我记录了它的结果,并在整个时间看到它们。显然它在第一次调用registerReceiver()
后没有变得无效。
我想知道这部分文档是否只适用于onReceive()
中注册的BroadcastReceivers
?并且它与动态创建和注册的AndroidManifest
完全不正确或无关?
当然,我想知道什么是我的动态接收器的正确清理和引用。
答案 0 :(得分:1)
代码中BroadcastReceivers
所需要做的就是注册并取消注册。该声明是为了通知您,您不能在onReceive
之外进行任何工作,例如在另一个线程中,并将值返回BroadcastReceiver
。为此,您可以BroadcastReceiver
开始Service
。