有什么方法可以通过代码获取Manifest.xml中定义的BroadcastReceiver的引用?
就我而言,我们正在使用需要包含在Manifest.xml中的BroadcastReceiver.但是它具有我想从我们的代码中重复使用的功能.因此,我不想创建另一个类似的BroadcastReceiver并从代码中实例化它,而是希望获得对现有实例的引用.
附加信息:
我的目标是从我的活动中订阅我的BroadcastReceiver上的一个事件-一个我想重用的事件-而不是在我的活动中创建此接收器的另一个实例,我想获得对现有实例的引用.
解决方法:
在清单中注册BroadcastReceiver时,您是在注册类,而不是其实例.每次发生广播时,您的< receiver>需要处理时,将创建一个新实例来执行此操作,因此您无法像所描述的那样真正引用该实例.
动态实例化和注册您也在清单中静态注册的Receiver类的实例非常好.不过,我要指出的是,如果无论如何都要运行静态注册的类-也就是说,如果它要处理与动态注册的类相同的广播,则可以考虑只从Receiver类中通知您的Activity-例如,与LocalBroadcastManager,另一个事件总线实现等配合使用-而不是从根本上复制Receiver.