安卓发布/订阅模式

11

Android中是否有发布/订阅模式?

我的目标是创建一个类,可以通知感兴趣的方关于事件的发生。然后这些感兴趣的方可以执行它们需要做的操作。

从微软的.NET世界来看,这种事情已经内置了。

Android中是否有类似的功能,或者我需要编写类似观察者模式的东西?


你可以尝试使用PServiceBus(http://pservicebus.codeplex.com/),只需要安装.Net ESB服务器并使用Java客户端(https://github.com/rpgmaker/PServiceBus-Java-Client)连接即可。通过它,你可以在Java和任何.NET应用程序之间进行通信,甚至在Java和Javascript之间进行通信。 - rpgmaker
5个回答

7

如下所述,针对更强大的解决方案,我还推荐使用来自greenrobot的优秀EventBus库。 - ApriOri

7

嗯,看起来与上下文和意图紧密耦合。我有一个普通的类,它不知道上下文、意图等等。举个纯粹的例子,一个负责计数到100的类,在计数到100后,可以通知其他对此事件感兴趣的对象。 - pdiddy
在Android中,这通常是一个很好的方法。还要注意,您可以通过使用LocalBroadcastReciver进行优化。 - Igor Čordaš

4
我认为你是在谈论应用程序内的类之间传递事件/消息。所以这个问题可能涉及到Java实现此模式的方式。
实际上没有已经预先制作好的东西(即没有“事件”系统类),让一个类传播事件/消息最常见的方法之一是使用“监听器”技术(参见wikipediaVogelIBM)。
也有框架,例如从这个SO answer中可以看到。
如果你担心Android中跨线程/进程的异步消息,那么有HandlersAsyncTasks和(用于进程间通信)Parcelables

1
谢谢,我希望有内置的东西,而不是自己编写观察者模式。 - pdiddy

3
我知道这可能有点过时,但它是“Android发布订阅”在谷歌中的顶级搜索结果。 本地广播管理器(Local Broadcast Manager)也是一种选择。它比全局广播意图具有一些优势。
但它仍然与意图紧密耦合。

0

我知道这已经有点老了,但我一直在使用GreenRobot的EventBus。到目前为止它非常好用。比BroadcastReceivers和LocalBroadcastManagers更松散地耦合了意图。在这里查看:http://greenrobot.github.io/EventBus/


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接