如何在清单中注册的广播接收者调用活动中的方法而不用意图启动活动?

时间:2015-08-04 02:47:38

标签: android android-activity broadcastreceiver android-manifest

我有一个扩展的broadcastreceiver类,用于侦听蓝牙连接/断开连接。我希望它能改变GUIActivity中某些文字的颜色。我不是故意将它作为内部类:保持GUI代码更易于管理/模块化。

我知道一种方法:动态注册接收器并在活动的上下文中传递它。然后在onResume和onPause中正常注册/取消注册。可以在this post

看到此解决方案

然而,我希望通过让我的接收器在清单中注册而不用担心注册/取消注册,我可以消除更多的代码。

我已尝试在Broadcastreceiver上的onReceive中投射上下文,如下所示

((SmokinoGUI) context).indicateBTConnection();

这会抛出一个异常,说明无法将上下文强制转换为SmokinoGUI。 indicationBTConnection()是SmoinoGUI活动中的一种方法,可以完成它所说的内容。

那么,有没有办法在已经在清单中注册并且尚未动态实例化的广播接收器中调用活动中的方法?

1 个答案:

答案 0 :(得分:1)

  

那么,有没有办法在已经在清单中注册并且尚未动态实例化的广播接收器中调用活动中的方法?

有很多方法。我最喜欢的是:

  1. 扩展Application类并将该类分配给Manifest中的Application name属性。

  2. 在该类中添加Activity的实例并为其创建getter和setter,您可以在Activity onCreate()中引用它。

  3. 在BroadcasetReceiver中获取应用程序并调用活动的getter。

  4. 如果所有这些听起来很复杂,那么,它确实没有,并且在每个应用程序中使用它都是很好的逻辑。我可以添加一些代码。