首页 > 解决方案 > 使用 BroadcastReceiver 传递 Intent.EXTRAS

问题描述

主要问题:我可以使用广播接收器将带有附加功能的意图传递给活动吗?

设置:我有一个来自 DatePicker 片段的记录日期,我想确保将 Millis 时间传递给另一个活动,但不会立即从包含该片段的那个 Activity 调用该活动

我尝试在带有 datePicker 片段的活动中使用以下代码:

Intent intent = new Intent().putExtra(EVENT_MILLIS, eventDateMillis); 
LocalBroadcastManager.getInstance(this).sendBroadcast(intent);

在“接收”活动中:

@Override
protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstatnceState);
setContentView...
LocalBroadcastManager.getInstance(this).registerReceiver(mReceiver, new IntentFilter(EVENT_MILLIS));

和我启动接收器的电话:

private BroadcastReceiver mReceiver = new BroadcastReceiver () {
@Override
public void onReceive(Content content, Intent intent) {
   setReceivedDate(intent.getLongExtra(EVENT_MILLIS,0));
}
}

标签: androidandroid-intentbroadcastreceiver

解决方案


使用Broadcast不是一个好的模式,它会降低应用程序的效率。尝试改用EventBus。对于较低的问题,它很容易使用。


推荐阅读