服务和活动之间的快速通信

时间:2012-03-17 13:46:59

标签: android service android-activity communication

我修改了Android蓝牙聊天代码,以便从BluetoothChatService接收的字节将直接发送到BluetoothChat Activity。

另一台蓝牙设备的发送速率为125Khz,每个数据包为20字节。 因此,每秒将有大约125 * 20个字节,必须由服务接收,然后发送到活动。

但是,我发现活动收到的数据会丢失数据包。我已经确认服务中收到的数据确实是正确的。

这是向活动发送20字节对象的代码部分。

mHandler.obtainMessage(BluetoothChat.MESSAGE_READ, 20, -1, buffer)
                        .sendToTarget();

这是从BluetoothChatService

获取消息的处理程序
private final Handler mHandler = new Handler() {
        @Override
        public void handleMessage(Message msg) {
            switch (msg.what) {
           case MESSAGE_READ:
                byte[] readBuf = (byte[]) msg.obj;
    ...}
}

知道如何解决这个问题吗?感谢。

1 个答案:

答案 0 :(得分:0)

  

这是向活动发送20字节对象的代码部分。

它正在向您的缓冲区发送引用。如果在读取更多蓝牙数据时重复使用该缓冲区,则在活动有机会使用数据之前,您的旧数据可能会被覆盖。