在文档中,为什么BluetoothServerSocket.accept()在while循环中被调用,如果它仍然阻塞线程?

时间:2016-09-20 11:30:25

标签: android sockets bluetooth android-bluetooth bluetooth-socket

在android文档中,以下代码出现在线程的run()段中:

BluetoothSocket socket = null;
        // Keep listening until exception occurs or a socket is returned
        while (true) {
            try {
                socket = mmServerSocket.accept();
            } catch (IOException e) {
                break;
            }
            // If a connection was accepted
            if (socket != null) {
                // Do work to manage the connection (in a separate thread)
                manageConnectedSocket(socket);
                mmServerSocket.close();
                break;
            }
        }

但是,accept()方法会阻塞该线程。因此,我不明白为什么需要while()循环,特别是因为在所有可能的情况下,while循环在第一次运行时都被破坏了。

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

通常在接受和处理一个套接字后不会中断:你会无限期地循环接受套接字。

这是一个愚蠢的例子。