【问题标题】:android publish/subscribe patternandroid发布/订阅模式
【发布时间】:2011-12-02 20:29:32
【问题描述】:

android 中有发布/订阅模式吗?

我想要实现的是我有一个可以通知相关方事件的类。然后感兴趣的一方可以做任何它需要的事情。

来自 .net microsoft 世界,这种东西是内置的。

android有没有类似的东西,还是我必须写一些类似观察者模式的东西?

【问题讨论】:

标签: android publish-subscribe


【解决方案1】:

看看BroadcastReceiver。我想这就是你要找的。​​p>

【讨论】:

  • hmmm 似乎与上下文和意图紧密结合。我有一个不知道上下文、意图等的普通类。例如,一个负责计数到 100 的类,当它计数到 100 时,它可以通知其他对此事件感兴趣的对象。
  • 在 Android 中,这通常是执行此操作的好方法。另请注意,您可以使用 LocalBroadcastReciver 进行优化
【解决方案2】:

我发现 LocalBroadcastManager 最适合应用内的发布-订阅风格。 你总是可以使用观察者,但这个让生活更轻松:

https://developer.android.com/reference/android/support/v4/content/LocalBroadcastManager.html

编辑: 现在似乎有几个解决方案。他们当然值得一提:

【讨论】:

  • 如下所述。对于更强大的解决方案,我还会推荐来自 greenrobot 的优秀 EventBus 库。
【解决方案3】:

我认为您所说的是在应用程序中的类之间传递事件/消息。所以这个问题可能归结为这种模式的Java实现。

实际上没有任何东西已经嵌入(即没有 event 系统类),让类传播事件/消息的最常见方法之一是 Listener 技术(参见 wikipedia , Vogel, IBM)。

也有框架,来自SO answer

如果您担心 Android 中线程/进程之间的异步消息,那么有 HandlersAsyncTasks 和(用于进程间)Parcelables

【讨论】:

  • 谢谢希望内置的东西而不是烹饪我自己的观察者模式。
【解决方案4】:

我知道这有点旧,但它是“android 发布订阅”的谷歌搜索结果。

Android 的Local Broadcast Manager 也是一个选项。与全球广播意图相比,它具有一些优势。

尽管如此,它仍然与意图紧密耦合。

【讨论】:

    【解决方案5】:

    我知道这是旧的,但我一直在使用 GreenRobot 的 EventBus。到目前为止很棒。比 BroadcastReceivers 和 LocalBroadcastManagers 更松散地耦合到意图。在这里查看:http://greenrobot.github.io/EventBus/

    【讨论】:

      猜你喜欢
      • 2016-12-14
      • 1970-01-01
      • 2012-07-01
      • 2016-07-03
      • 2016-11-25
      • 1970-01-01
      • 2018-12-30
      • 1970-01-01
      • 2021-09-09
      相关资源
      最近更新 更多