2013-09-05 21 views
0

我有幾個視圖,由計時器任務每秒更新一次。他們本身不能invalidate(),因爲「只有創建視圖層次結構的原始線程才能觸及其視圖」。如何從另一個線程無效()一個視圖?

有一個叫做runOnUiThread的函數,但是我需要一個Activity來運行它。

我怎樣才能解決這個問題?編號:是爲了什麼?我如何保證無效和更新會很快發生(如果UI線程不忙)?

+0

爲什麼你使用一個Timer(以及它後面的一個線程)來完成這樣一項簡單的任務?使用處理程序代替 – pskink

+0

@pskink計時器正在模擬藍牙偵聽器線程。 – Andreas

回答

1

1)

這是什麼postInvalidate()是?

According to the Docs

使用此無效從非UI線程的視圖。

invalidate()是在UI Thread

2)

如何保證更新Views我會的失效和更新將很快發生 (如果UI線程不忙)?

而且從文檔

導致一個無效對隨後的循環事件循環發生的同一部分

所以我想這很快就取決於你的「的定義」。正如文檔所說,它應該發生在下一個事件循環中