我整天都在摸着这个。我有一个可以监听设备的蓝牙插座。这是通过AsyncTask完成的。我第一次尝试从远程设备连接到它时,我没有任何问题。现在我正在尝试模拟断开连接。超出范围,关闭远程设备的蓝牙适配器,或者只是远程关闭连接。现在,当连接丢失时,服务器套接字会抛出IOException。我正在使用它作为我重新启动AsyncTask并再次开始监听的提示。这似乎工作正常,我的所有logcat消息都显示在重新启动,所以我知道任务正在运行,但套接字不会接受连接。认为这可能是重新启动AsyncTask的问题,我尝试在接受后立即转储连接。重置它们后,即使我调用system.gc(),我仍然会遇到同样的问题。
下面是我正在使用的一些代码来测试:
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);
}
我真的不知道我做错了什么。非常感谢任何帮助。
感谢。
答案 0 :(得分:0)
如果你只是在Android 2.3.x上看到这个问题,你可能会遇到我刚刚在另一个问题上写的问题。这个问题也表现为accept()第一次工作,但随后连续尝试失败。有关详细信息,请参阅我的帖子here。