2011-07-25 25 views
0

我正在更新我在同一活動中註冊的BroadcastReceiver的活動UI。該API文檔說:使用處理程序發佈Runnable是否使事物異步?

[...]函數[的onReceive()]通常其進程的主線程 內稱爲[...]

,所以我想更新UI是好的。

該文檔也說:

[...]你永遠不應該在它執行長時間運行的操作(有 10秒的超時[...]

我只是在TextView上設置了一些文本,所以我想這不會花費超過10秒的時間。

但是,這裏終於出現了我的實際問題:是否有任何意義將Runnable添加到主線程的消息隊列使用Hand LER,這樣的onReceive()可以立即返回,並在UI的更新發生在稍後的某個時間點,作爲文檔提示:

有一個處理器兩個主要用途是:(1)調度信息和 可運行的程序將在未來執行; [...]

回答

1

如果你只是在TextView上設置文本,那麼你就不會有問題。沒有必要用Handler s過分複雜化。

雖然我會說,有些人喜歡使用處理程序,只是因爲如果需要調用多個對特定UI方法的調用,它纔會使事物處於組織狀態。使用處理程序將保證執行的代碼最初將放置在UI線程中,這樣可以避免檢查您正在運行的線程。

要記住的重要一點是所有UI操作都應在UI線程上執行,並且任何類型的密集處理都應在後臺線程上完成。

相關問題