Приложение Android неожиданно завершило работу, когда я закрыл сокет bluetooth serversocket или bluetooth - PullRequest
1 голос
/ 26 декабря 2010

Приложение для Android вышло без предупреждения и ошибки, когда bluetoothServersocket.close () вызывается в главном потоке, а bluetoothServersocket.accept ();был заблокирован для входящих соединений в другом потоке.

Вот части моего кода.

public void run () {

try {

bluetoothServerSocket = BluetoothAdapter.getDefaultAdapter (). listenUsingRfcommWithServiceRecord (LISTEN_NAME, LISTEN_UUID);

/ * заблокированный здесь поток для входящих соединений * /

bluetoothSocket = bluetoothServerSocket.accept ();

*20.

} catch (Exception e) {} finally {

try {bluetoothServerSocket.close ();} catch (Exception ex) {}

try {bluetoothSocket.close ();} catch (Exception ex) {}

}

}

И в действии.

public void onStop () {

try {thread.bluetoothSocket.close ();} catch (Exception ex) {}

try {thread.bluetoothServerSocket.close ();} catch (Exception ex) {}

super.onStop ();

}

Когда я нажал кнопку возврата.Действие закрылось, но примерно через одну секунду приложение закрылось без предупреждения.

Моя версия для Android OS 2.2.устройство HTC Desire.

1 Ответ

1 голос
/ 03 января 2011

Мы должны закрыть соединение Bluetooth следующим образом:

try {synchronized (bluetoothServerSocket) {bluetoothServerSocket.close ();}} catch (исключение ex) {}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...