LocalMessageManager

Additional

Language
Java
Version
0.1.7 (Mar 2, 2017)
Created
Oct 6, 2016
Updated
Mar 2, 2017 (Retired)
Owner
INLOOPX (inloop)
Contributor
Juraj Novák (yuraj11)
1
Activity
Badge
Generate
Download
Source code

LocalMessageManager

Used for efficient and simple delivery of messages within you application. It's an alternative to LocalBroadcastManager.

  • Simple to use
  • Can send any arbitrary object (doesn't need to be Parceable / Serializable / Bundle)
  • Very efficient - objects are pooled and no new instances are created during delivery
  • Uses standard Android Handler for message delivery
  • Messages are always delivered to the main UI thread
  • No Context needed
  • Lightweight - just one main class (LocalMessageManager)

Comparision with LocalBroadcastManager

  • Less complex code (compare with LocalBroadcastManager source)
  • No need to use a Bundle to transfer the data and add unnecessary string keys
  • Doesn't create any new instances, less impact on Garbage Collector
  • No need to define IntentFilters / Actions
  • Less error prone due to more straighforward API

How to implement

You can send a message from anywhere. If you don't need any parameters, just use:

LocalMessageManager.getInstance().send(R.id.msg_sample_event);

(The message ID is an integer. You can use simple constants or Android IDs or anything else).

If you want to send an arbitrary object:

LocalMessageManager.getInstance().send(R.id.msg_sample_event, new MyCustomObject());

(you can also send a simple integer argument or a Bundle)

Register receiver. In case of an Activity this is usually onStart(), or onCreate(). You can also put this code into your base activity or fragment.

LocalMessageManager.getInstance().addListener(this);

You can listen to all events or add only a listener to a specific message ID.

Unregister receiver. In case of an Activity this is usually in onStop() or onDestroy(). You can also put this code into your base activity or fragment.

LocalMessageManager.getInstance().removeListener(this);

Create a listener or let your class implement LocalMessageCallback.

@Override
public void handleMessage(@NonNull final LocalMessage msg) {
    switch (msg.getId()) {
        case R.id.msg_sample_event : {
            mTextView.setText("Received simple event");
        }
        break;
    }
}

Download

Grab via Gradle:

compile 'eu.inloop:localmessagemanager:0.1.7'