我有一個線程,其更新使用可運行一個TextView:的Android的TextView沒有完全更新
// runnable to allow updating the UI from the thread
Runnable updateTextView = new Runnable() {
public void run() {
mTextView.setText(mDisplayedText);
mTextView.invalidate();
}
};
但是,文本不正確更新。它適用於最初的幾次寫入,然後只寫入一半的文本,而將前一段文本的後半部分留在那裏。
轉動屏幕使其刷新並正確繪製。
該textview是多行,我寫了一個字符串,它包含\ n字符的行尾。
上面的無效調用沒有區別。
任何想法?
更新:mDisplayedText在也包含我的線程類的活動中聲明。在線程運行的循環,我呼籲:
mDisplayedText = getText()
runOnUiThread(updateTextView);
的環路含有100毫秒的睡眠,但只寫文字時,它已經更改,因此在現實中,它會少於一次第二
ANSWER :
有點尷尬。問題出在其他代碼中。
我正在收到一個UDP套接字到同一個數據包,並將packet.getData讀入一個新的字符串。 這是將整個數據包複製到字符串中,而不是僅在該消息中收到的字節。 第二個問題是我需要每次調用packet.setLength來設置整個數據包的可用長度。
感謝您的答案!
可能不會解決您的問題,但你並不需要的無效電話。 – Karakuri
我看到我錯誤地閱讀了你的問題。您確實正在使用您發佈的Runnable代碼的線程。你可以在你傳遞這個Runnable的地方發佈代碼片段嗎?你多頻繁地這樣做? – Vikram
@vikram - 我已經添加了一些更多的細節 – FrinkTheBrave