android - 使用 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));
}
}
解决方案
使用Broadcast
不是一个好的模式,它会降低应用程序的效率。尝试改用EventBus。对于较低的问题,它很容易使用。
推荐阅读
- github - GitHub 使用什么进行实时更新?不再有 websocket 或 SSE?
- javascript - .value 和 .nodeValue 的区别
- javascript - 多次单击按钮时如何更改inner.HTML
- azure - 如何在 golang 中生成 x5t 标头值
- flutter - 颤振自动填充不适用于文本字段
- amazon-dynamodb - GSI 全局二级索引是否允许使用 AWS DynamoDB 稀疏索引?
- python-3.x - ValueError:不支持的“设备类型”
- python - 无法理解 Python 用户定义的函数
- spring - Spring Kafka 死消息队列和重试
- javascript - 隐藏和取消隐藏列 - Google 表格