我整天都在为此挠头。我有一个监听设备的蓝牙套接字。这是通过 AsyncTask 完成的。第一次尝试从远程设备连接到它时,我没有任何问题。现在我正在尝试模拟断开连接。通过超出范围,关闭远程设备的蓝牙适配器,或者只是远程关闭连接。现在,当连接丢失时,服务器套接字会抛出 IOException。我以此为线索重新启动 AsyncTask 并再次开始收听。这似乎工作正常,我所有的 logcat 消息都在重新启动时显示,所以我知道任务正在运行,但套接字不会接受连接。认为这可能是重新启动 AsyncTask 的问题,我尝试在连接被接受后立即转储连接。重置它们后,
这是我现在用来测试的一些代码:
boolean running = true;
while(running){
btAdapter = BluetoothAdapter.getDefaultAdapter();
btServerSocket = btAdapter.listenUsingRfcommWithServiceRecord(NAME, ID);
btSocket = btServerSocket.accept();
btServerSocket.close();
btSocket.close();
btServerSocket = null;
btSocket = null;
btAdapter = null;
System.gc();
sleep(10);
}
我真的不知道我做错了什么。任何帮助是极大的赞赏。
谢谢。