0
再次需要你的幫助:我使用的是藍牙聊天例如通過Android和嘗試實施其等待來自處理器的答案的函數:多線程在Android中使用BluetoothChat:等待答案
public void getOBD2Values() {
Log.d(TAG, "Before");
writeMessage("Hello");
mNastyBusyWait = true;
while(mNastyBusyWait){ //send Thread to sleep
try {
Thread.currentThread().sleep(500);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
Log.d(TAG, "After");
}
線程應該等到處理程序收到答案:
case MESSAGE_READ:
byte[] readBuf = (byte[]) msg.obj;
String readMessage = new String(readBuf, 0, msg.arg1);
mNastyBusyWait = false; // wake Thread up again
Log.d(TAG, "NOT IN IF :MESSAGE_READ: " + readMessage);
break;
這是一個愚蠢的忙等待方法來運行示例。 Afaik的問題是線程等待,但處理程序是在同一個類中,它從來沒有用於繼續...什麼是更好的方法,或者我該如何解決這個問題?我終於從藍牙客戶端得到答案!
謝謝。
尋找某種類型的監聽器類。 – Stunner
如果你這樣做,這意味着你在不同的線程中讀寫你的布爾值 - 在這種情況下,它應該至少是'volatile' – fge