对象,广播接收者和服务之间的通信

时间:2017-08-02 07:29:08

标签: java android android-service observable android-broadcastreceiver

我已经制作了这个应用程序,它几乎完全在通知中提供了它的功能。配置在应用程序本身中完成。这是我现在的结构:

  • 服务1:从FireBase检索数据并更改该数据并将其保存在对象中。应用程序需要在应用程序中显示的所有内容都在此对象中。它通过可观察的模式分发给其他活动。所以这些活动实现了Observer。

  • 服务2:此服务跟踪可能直接影响服务对象1的外部更改。因此,此服务绑定到服务1。

  • 活动:显示数据的一些活动。所有这些活动都实现Observer并观察存储在Service 1中的对象。

到目前为止一切顺利。上面没有任何问题。我可以与每项活动的两项服务进行沟通。如果他们感兴趣的对象发生变化,每个活动都会得到更新,并确定如何处理更新后的数据。

现在我收到了这个通知,所有这些动作都是广播意图,我有一个处理这些意图的BroadcastReceiver。广播接收者可能需要来自服务1的数据来执行它的动作,并且所有动作都位于简单的类中(没有活动或服务),但是我不能将广播接收者或对象绑定到服务。

我认为我在这里有两种可能的解决方案:

  1. 创建另一项服务,其中包含所有可能的“通知”操作。此服务可以绑定到Service 1,因此可以检索所需的所有数据。
  2. 使Service 1中的可观察对象成为静态对象,因此即使“通知”操作所在的对象也可以访问它。
  3. 解决方案1的可能问题:也许3个服务有点过度杀戮?但是将所有功能放在同一个服务中会产生一个很大的,不明确的服务。

    解决方案2的可能问题:我已经读过静态变量不是最佳实践,因为静态变量代表全局状态并且很难推理。 Source

    我希望有人可以告诉我,如果我对上述假设是对的,如果有一个解决方案,我在这里没有提到。

0 个答案:

没有答案