我正在开发一个应用程序,其中在android wear上检测到的传感器数据通过sendbroadcast发送到移动设备。移动应用程序中有一个开关,可以启动和停止android wear上的传感器检测和传感器数据发送过程。
问题是,从android wear发送数据到可以使用广播接收器在移动设备上接收数据为止,存在延迟。因此,每当我按下开关停止服务,然后再次按下它再次启动该过程时,移动设备将继续接收上一个会话的剩余数据,然后再从新会话接收数据。
有什么方法可以在单击停止开关时清除所有广播数据,因此当我按下启动开关时,它只会从此会话接收新数据?
您可以使用有序的 boradcast:
void sendOrderedBroadcast (Intent intent,
String receiverPermission)
向所有感兴趣的广播接收者广播给定的意图, 一次交付一个,以允许更多首选接收器 在将广播传送到不太受欢迎的广播之前使用广播 接收机。此调用是异步的;它立即返回,而您 将在接收器运行时继续执行。
然后,您可以在需要时中止Broadcat:
void abortBroadcast ()
设置指示此接收器应中止电流的标志 广播;仅适用于通过发送的广播 这将阻止任何其他广播。 接收方接收广播。它仍然会调用 onReceive(上下文,意图(的广播接收器,调用方 Context.sendOrderedBroadcast传入。
此方法不适用于非有序广播,例如 与 Context.sendBroadcast 一起发送