我正在开发一款应用程序,在安卓穿戴设备上检测到的传感器数据将通过发送广播发送到移动设备。移动应用程序中有一个开关,可以启动和停止android佩戴上的传感器检测和传感器数据发送过程。
问题是,从android wear发送数据的地方会有一个延迟,直到移动设备使用broadcastreceiver接收数据。因此,每当我按下开关以停止服务,然后再次按下开关以再次启动该过程时,移动设备将在接收来自新会话的数据之前继续接收来自前一会话的剩余数据。
有没有什么方法可以在点击stop开关时清除所有广播数据,这样当我按下start开关时,它将只接收来自该会话的新数据?
发布于 2018-05-20 07:22:20
您可以使用有序广播:
void sendOrderedBroadcast (Intent intent,
String receiverPermission)将给定意图广播给所有感兴趣的BroadcastReceivers,一次传送一个,以允许更多的首选接收器在广播传送给不太受欢迎的接收器之前消费该广播。此调用是异步的;它立即返回,您将在接收器运行时继续执行。
然后你可以在你想要的时候使用abortBroadcat:
void abortBroadcast ()设置指示此接收器应中止当前广播的标志;仅适用于通过Context.sendOrderedBroadcast发送的广播。这将阻止任何其他广播接收器接收该广播。它仍然会调用Context.sendOrderedBroadcast的调用者传入的BroadcastReceiver的onReceive(Context,Intent)。
此方法不适用于无序广播,如使用Context.sendBroadcast发送的广播
https://stackoverflow.com/questions/50430153
复制相似问题