android 基礎加強

當用戶執行操作(比如點擊了一個按鈕)系統會生成一個Message對象,把用戶操作的信息寫入Message對象,並把這個Message對象壓入MessageQueue隊列的尾部。系統過一段時間(一般是五秒)後會再來檢查,剛剛放入的信息是不是已經被處理了,如果信息還在隊列中就表明。處理前面信息的過程當中發生的阻塞,用戶的操作沒有及時得到響應。系統彈出ANR對話框。

作個總結:

  因爲UI線程需要保持一直運行的狀態,所以要有一個循環保持這個線程不會死掉,但這個線程又必需阻塞,以減少cpu的消耗。android中的這個循環就是通過Looper實現的。有了這個 Looper,Looper就佔據了整個線程,導致所有的方法想在些線程中運行就必需通過這個Looper,所以要有個方法可以進入這個Looper的內部。MessageQueue就擔當了這個通道 的角色。Message擔當了集合的角色。所有在UI線程中運行的方法都必需通過MessageQueue進入Looper內部,不管 是用戶定義的方法還是系統事件包括onCreate(),onStop(),用戶點擊事件etc..


http://www.cnblogs.com/chon/archive/2011/06/28/2092363.html

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