当bluetoothServersocket.accept();在主线程中调用bluetoothServersocket.close()时,Android应用程序退出,没有任何警告和错误。另一个线程的传入连接被阻止。

这是我的代码片段。


  
    公共无效run(){
    
    
      
        尝试{
        
        
          
            bluetoothServerSocket =蓝牙适配器。
            getDefaultAdapter()。listenUsingRfcommWithServiceRecord(LISTEN_NAME,LISTEN_UUID);
            
            / *此处阻止传入连接的线程* /
            
            bluetoothSocket = bluetoothServerSocket.accept();
            
            ...
          
        
        
        } catch(Exception e){}最后{
        
        
          
            尝试{bluetoothServerSocket.close();} catch(exException ex){}
            
            尝试{bluetoothSocket.close();} catch(Exception ex){}
          
        
        
        }
      
    
    
    }
  


并在活动中。


  
    public void onStop(){
    
    
      
        试试{thread.bluetoothSocket.close();} catch(Exception ex){}
        
        试试{thread.bluetoothServerSocket.close();} catch(Exception ex){}
        
        super.onStop();
      
    
    
    }
  


当我单击后退按钮时。活动已关闭,但大约一秒钟后,该应用程序退出,没有任何警告。

我的Android OS版本是2.2。 HTC Desire设备。

最佳答案

我们应该像这样关闭一个蓝牙连接:


  
    尝试{同步(bluetoothServerSocket){bluetoothServerSocket.close();}} catch(Exception ex){}

07-24 14:54