2012-07-06 28 views
1

我正在嘗試編寫一個連接到服務器的演示應用程序,然後只是不斷監聽來自服務器的隨機定時輸入。發現和連接到服務器工作正常,現在我開始一個新的線程,所以我不阻止用戶界面。現在,在我的線索中,如果有傳入數據,我需要不斷收聽並做出反應。據我到目前爲止閱讀,它應該做這樣的:Android bufferedReader.readLine用於持續監聽

while (connected) { 
     while ((line = bufferedReader.readLine()) != null) { 
      // do something with line and contact the ui 
     } 
    } 

我不明白:的readLine()顯然只能讀取一條線,如果有從服務器的輸入數據。因此,一旦服務器停止發送,不應該發生循環中斷,這意味着什麼也沒有發送?

thanx的任何想法, 馬庫斯

回答

1

的readLine是一個阻塞方法,所以如果正在接收什麼,它會等待阻塞執行那裏。只有當接收到空值時,循環纔會停止(當讀取文本文件時,這意味着已達到文件末尾)。

嘗試以不同的方式檢測封閉連接,或者如果您還編碼服務器,請嘗試發送類似「END」的內容,以便在客戶端讀取。

+0

所以,這意味着,在內部循環中,一旦有輸入數據,內部填充緩衝區,並在行結束時緩衝區刷新並執行循環?此外,這意味着,只要在點動流中沒有失敗,導致無效,循環不斷讀取,無論如何? – 2012-07-06 10:05:09

+0

如果有人可以證實這一點,我可以接受答案。 – 2012-07-07 07:23:23