android - 在BluetoothChat示例中以非同步方式在Bluetooth上写入

标签 android multithreading bluetooth

这是我第一次参与基于android的蓝牙应用程序,并且为了更好地了解其工作方式,我在研究BluetoothChat示例。
或多或少,我想我已经了解了一切,但是到了我无法再前进的地步。
用这种方式写数据的原因是什么?

public void write(byte[] out) {
    // Create temporary object
    ConnectedThread r;
    // Synchronize a copy of the ConnectedThread
    synchronized (this) {
        if (mState != STATE_CONNECTED) return;
        r = mConnectedThread;
    }
    // Perform the write unsynchronized
    r.write(out);
}

为什么不直接调用mConnectedThread.write(out)?
同步的目标是什么?

我了解(显然是错误地)此代码仅在主线程上执行,在这种情况下,为什么我们需要此互斥锁?

谢谢大家。
附注:对不起,我的英语不好!

最佳答案

对于问题部分:同步的目标是什么? -目标似乎正在以线程安全的方式访问mThread和mConnect变量(即,在访问另一个变量时未对其进行任何更改)。此链接(以及其中的其他链接)将通过Java Synchronization上的更多指示灯显示

关于android - 在BluetoothChat示例中以非同步方式在Bluetooth上写入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21466156/

相关文章:

android - 自定义抽屉导航布局 (xml)

objective-c - 如何使用 Objective-C 获取正在运行的进程

android - 更改 Android 应用程序的状态栏颜色但保持半透明

java - Android 中事件监听器的超时检测

java - java多线程在不同操作系统上有不同吗?

android - Bluetooth.ACTION_FOUND 未注册

android - 低功耗蓝牙 Android 服务器

ios - 通过蓝牙命令控制AVAudioRecorder

java - onActivityResult 无法正常工作

c++ - QThread 拥有的 QWidget 的消息循环