0

I have a fragment with TextView. From the different places of my app I want to update that TextView, so I'm using LocalBroadcastManager but it is not always working - In fact when I disable device administrator (this is MDM app) it 'forget' to receive data...

    public static void sendMessage(String message) {
        MESSAGE = message;
        Intent intent = new Intent(MESSAGE_INTENT_FILTER);
        intent.putExtra(MESSAGE_EXTRA, message);
        App.getAppContext().sendBroadcast(intent);
    }

App.getAppContext() is a static context declared in my Application class.

@Override
public void onResume() {
    super.onResume();
    updateStatus(MESSAGE);
}

In onResume() I'm updating stored message (because my fragment isn't always appeared.

my Receiver:

    receiver = new BroadcastReceiver() {
        @Override
        public void onReceive(Context context, Intent intent) {
            String message = intent.getStringExtra(MESSAGE_EXTRA);
            updateStatus(message);
        }
    };

onStart / onStop:

@Override
public void onStart() {
    super.onStart();
    initReceiver();
    IntentFilter intentFilter = new IntentFilter(MESSAGE_INTENT_FILTER);
    LocalBroadcastManager.getInstance(App.getAppContext()).registerReceiver(receiver, intentFilter);
}

@Override
public void onStop() {
    super.onStop();
    LocalBroadcastManager.getInstance(App.getAppContext()).unregisterReceiver(receiver);
}

my logs:

on start fragment

on resume fragment - message: Message 1

update status - message: Message 1

send message: Message 2

on stop fragment

on start fragment

on resume fragment - message: Message 2

update status - message: Message 2

DISABLED ADMIN

send message: Cancel

And thats it... no more receive

Community
  • 1
  • 1
Lau
  • 1,804
  • 1
  • 23
  • 49
  • You're sending the intent with the extra being stored in `MESSAGE_KEY`, but retrieving it with `MESSAGE_EXTRA`, is this normal? – NSimon Apr 25 '16 at 08:35
  • 1
    If you want Receivers registered with `LocalBroadcastManager` to get broadcasts, you need to send them with `LocalBroadcastManager`. That is, `LocalBroadcastManager.getInstance(context).sendBroadcast(intent);`. – Mike M. Apr 25 '16 at 08:37
  • Its was a mistake with copy-paste - it is `MESSAGE_EXTRA` in my code - edited... – Lau Apr 25 '16 at 08:38

0 Answers0