0

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

不幸的是,如果我发送两个请求(每个对象一个),响应会执行四次。据我了解,由于第一个请求的响应在两个对象的 BroadcastReceiver 中执行,然后来自第二个对象请求的响应再次在两个对象中执行。

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

4

1 回答 1

0

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

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

于 2012-07-13T18:07:34.513 回答