私は次のものを行うスレッドを書き込もうとしています:
1. 入力ストリームから読み取ります。
2. その他のルーチン
3. ソケットが閉じている場合は、例外をスローします。
BlueTooth Socket とソケットからの inputStream は、この前にセットアップされています。コードは次のとおりです。
public void run() {
byte[] buffer = new byte[1024];
int bytes;
while (true) {
try {
//if(mInputStream.available() > 0){ //-------- Line 1
bytes = mInputStream.read(buffer);
//} //-------- Line 2
//---------------------//
// some other routines //
//---------------------//
} catch (IOException e) {
connectionLost();
break;
}
}
}
問題は、ブロッキングのために上記のコードがmInputStream.read()でハングすることです。しかし、1行目と2行目のコメントを外すと、mInputStream.available()関数はBlueToothSocketを閉じても例外をスローしません。読み取り機能のブロックを解除する方法、または available() が使用されて BlueTooth Socket が閉じられているときに例外をスローする方法はありますか? 感謝します!