Android消息機制詳解

use for

相信於此,絕大多數同學都會回答消息機制是android 爲了線程間通信而引入的工具。可以輕鬆的將一個任務切換到handler所在線程執行。android開發規範有規定,不允許於子線程更新ui,這樣會觸發異常;我們平時使用handler主要都是將子線程切換到主線程中去執行;因此從本質上來來說,Handler並不是專門用於更新UI的,它只是常被開發者用來更新UI。

Q?爲何不能在主線程外更新ui呢?

A:因爲Android的UI線程是非線程安全的,應用更新UI,是調用invalidate()方法來實現界面的重繪,而invalidate()方法是非線程安全的,也就是說當我們在非UI線程來更新UI時,可能會有其他的線程或UI線程也在更新UI,這就會導致界面更新的不同步。因此我們不能在非UI主線程中做更新UI的操作。也就是說我們在使用Android中的線程時,要保證: 更新ui都在UI主線程執行.

Q: 那爲何不將需要更新ui的操作放在UI線程執行呢?

**A:**我們都知道在java中,線程存在以下幾種基本狀態:創建,就緒運行阻塞,死亡。我們的應用啓動後,所有的交互都是在UI線程完成的;如果在UI執行延時操作,如常見的網絡請求UI線程就會進入阻塞狀態;此時用戶就無法響應任何操作了;如果此過程超過5秒,就會讓程序處於ANR(application not response),這時用戶就可能想要和你的應用說聲gg了。

Q

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章