android publish/subscribe pattern

一曲冷凌霜 提交于 2019-12-10 12:54:47

问题


Is there a publish/subscribe pattern in android?

What I want to achieve is I have this class that can notify interested party of an event. Then the interested party can do whatever it needs.

Coming from a .net microsoft world, this sort of thing are build in.

Do android have something similar, or I have to write some thing like an observer pattern?


回答1:


I think you are speaking in terms of passing events/messages among classes within your application. So this question probably goes down to Java implementation of such a pattern.

There's nothing actually already baked in (i.e. no event system class), one of the most common way to let a class spread an event/message is the Listener technique (see wikipedia, Vogel, IBM).

There are frameworks too, as from this SO answer.

If you are concerned about asynch messages between thread/processes in Android, then there are Handlers, AsyncTasks and (for inter-process) Parcelables.




回答2:


I found LocalBroadcastManager the most suitable for in app pub-sub style. You can always use observers but this one makes life more easy:

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

EDIT: It seems like there are couple of solutions nowdays. They surely worth mentioning:

  • EventBus as mentioned previously

  • Otto

  • RxBus




回答3:


Take a look at BroadcastReceiver. I think it's what you're looking for.




回答4:


I know this is a bit old, but it was top google result for "android publish subscribe".

Android's Local Broadcast Manager is also an option. It has some advantages over globally broadcasting intents.

It is still tightly coupled to intents though.




回答5:


I know this is old, but I have been using EventBus by GreenRobot. It is great so far. Much more loosely coupled to intents than BroadcastReceivers and LocalBroadcastManagers. Check it out here: http://greenrobot.github.io/EventBus/



来源:https://stackoverflow.com/questions/8362241/android-publish-subscribe-pattern

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!