我有TextView
的片段。从我的应用程序的不同位置,我想更新TextView
,所以我使用LocalBroadcastManager
但它并不总是有效 - 事实上,当我禁用设备管理员(这是MDM应用程序)时,它'忘记'接收数据......
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()
是我的Application类中声明的静态上下文。
@Override
public void onResume() {
super.onResume();
updateStatus(MESSAGE);
}
在onResume()
我正在更新存储的消息(因为我的片段并不总是出现。
我的接收者:
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);
}
我的日志:
开始片段
on resume fragment - message:Message 1
更新状态 - 消息:消息1
发送消息:消息2
关于停止片段
开始片段
on resume fragment - message:Message 2
更新状态 - 消息:消息2
禁用管理
发送消息:取消
就是这样......不再接受