android publish/subscribe pattern

10,381

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.

Share:
10,381
pdiddy
Author by

pdiddy

Updated on July 18, 2022

Comments

  • pdiddy
    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
    pdiddy over 12 years
    hmmm 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
    pdiddy over 12 years
    Thanks was hoping for something built in instead of cooking my own observer pattern.
  • Igor Čordaš
    Igor Čordaš almost 10 years
    In Android this is generally a good way to do this. Also note you can optimise by using LocalBroadcastReciver
  • ApriOri
    ApriOri about 9 years
    As mentioned below. For a more robust solution I would also reccomend the excellent EventBus library from greenrobot.