问题
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