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