0
我的應用程序顯示穩定的藍牙文本輸入流中的數據。如何停止暫停藍牙讀取的線程
在Android 2.3.4中,如果關閉套接字,讀取立即拋出IO異常。在2.2中只有大部分時間。
我試圖在調用onStop()時停止讀取。然後在onStart()我重新連接。
是否有更好的方法來終止暫停在inputStream讀取的線程,這可能適用於所有版本?
感謝 TomZ
我的應用程序顯示穩定的藍牙文本輸入流中的數據。如何停止暫停藍牙讀取的線程
在Android 2.3.4中,如果關閉套接字,讀取立即拋出IO異常。在2.2中只有大部分時間。
我試圖在調用onStop()時停止讀取。然後在onStart()我重新連接。
是否有更好的方法來終止暫停在inputStream讀取的線程,這可能適用於所有版本?
感謝 TomZ
我試圖中斷任務,並在多個類型取決於它是在中斷的時間做什麼,並讓編譯我捕捉異常,它說錯誤異常的得到深陷可能不被拋出。即使我確實得到了一些工作代碼,它仍然在Froyo(Galaxy S - Vibrant)上存在可靠性問題。
所以我備份並嘗試使用InputStream.available在一個短暫的睡眠循環中檢查一個設置爲結束讀取任務的標誌(因此任務從未暫停,除了睡眠)。這在各種Android版本上運行良好。
看來訣竅在於不要從外部阻止線程,而是讓它檢測到需要退出並返回它自己的線程。
看起來有點混亂,有點讀投票。但代碼現在穩定,手機性能似乎沒有受到影響。
線程在IO套接字讀取時被阻塞。您從另一個線程關閉套接字。我很抱歉,但我不得不問 - 你期待什麼樣的結果?拋出異常是將套接字連接撕掉的合理迴應。你可以捕捉到異常並處理它。 –
這正是我想要的和預期的例外。問題是2.2並不總是拋出它,它只是掛起,所以我正在尋找更好的出路。從我可以告訴的是,沒有辦法讓藍牙套接字讀取超時。 TomZ – TomZ