Android BroadcastReceiver再执行两次

时间:2012-07-13 16:55:06

标签: java android bluetooth broadcastreceiver

所以我有2个相同类的蓝牙GATT服务器对象。 他们每个人都有一个IntentFilter和BroadcastReceiver。 当对象从蓝牙服务器接收数据时,它在BroadcastReceiver中执行特定功能。

不幸的是,如果我发送两个请求(每个对象一个),则响应执行四次。 据我所知,第一个请求的响应在两个对象的BroadcastReceiver中执行,然后第二个对象请求的响应再次在两个对象中执行。

如何指定BroadcastReceiver仅在请求来自的对象中执行代码?

1 个答案:

答案 0 :(得分:0)

如果对sendBroadcast()BroadcastReceiver的调用都在同一个对象内,我不得不怀疑使用广播是否真的是一个好方法(但没有代码,这是一个假设)

要直接回答您的问题,您必须使用Intent中的一个可过滤参数来区分这两个参数。例如,如果它们具有相同的操作,请在数据字段中设置不同的Uri,或者为每个对象设置不同的MIME类型参数。然后,当您使用IntentFilter注册接收器时,将这些特定参数从对象应用到过滤器。