android publish/subscribe pattern
Solution 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.
Solution 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:
Solution 3
Take a look at BroadcastReceiver
. I think it's what you're looking for.
Solution 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.
pdiddy
Updated on July 18, 2022Comments
-
pdiddy almost 2 years
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?
-
pdiddy over 12 yearshmmm seem so tightly couple to context and intent. I have a normal class that has no knowledge of context, intent, etc. For pure example, a class responsible to counts till 100, when it finished counting till 100 it can notify other objects that are interested in this event.
-
pdiddy over 12 yearsThanks was hoping for something built in instead of cooking my own observer pattern.
-
Igor Čordaš almost 10 yearsIn Android this is generally a good way to do this. Also note you can optimise by using LocalBroadcastReciver
-
ApriOri about 9 yearsAs mentioned below. For a more robust solution I would also reccomend the excellent EventBus library from greenrobot.