问题描述
场景:
活动A 打开活动B 。 活动B 具有一些过滤器,基于这些过滤器,活动A 的内容将发生变化。为了减少用户的等待时间,我想通知活动A ,一旦活动B 发生更改,便开始获取内容。
在不更改活动结构的情况下实现此目标的最佳方法是什么?
解决方法
最终使用LocalBroadcastManager。 在活动A中注册LocalBroadCastManager并从活动B发送消息。退出活动A后取消注册。
在活动A中:
LocalBroadcastManager.getInstance(this).registerReceiver(
mMessageReceiver,new IntentFilter("CUSTOM-EVENT_NAME"));
private BroadcastReceiver mMessageReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context,Intent intent) {
// process the message here
String data = intent.getStringExtra("intent-key")
}
};
在活动B中:
Intent intent = new Intent("CUSTOM-EVENT_NAME");
intent.putExtra("intent-key","data");
LocalBroadcastManager.getInstance(this).sendBroadcast(intent);