Android 的訊息佇列模型

來源:互聯網
上載者:User
Android 的訊息佇列模型

Android是參考Windows的訊息迴圈機制來實現Android自身的訊息迴圈的。
Android通過Looper、Handler來實現訊息迴圈機制,Android訊息迴圈是針對線程的(每個線程都可以有自己的訊息佇列和訊息迴圈)。
Android系統中,Looper負責管理線程的訊息佇列和訊息迴圈。我們可以通過Loop.myLooper()得到當前線程的Looper對象,通過Loop.getMainLooper()可以獲得當前進程的主線程的Looper對象。
一個線程可以存在(當然也可以不存在)一個訊息佇列和一個訊息迴圈(Looper)。
Activity是一個UI線程,運行於主線程中,Android系統在啟動的時候會為Activity建立一個訊息佇列和訊息迴圈(Looper)。
Handler的作用是把訊息加入特定的(Looper)訊息佇列中,並分發和處理該訊息佇列中的訊息。構造Handler的時候可以指定一個Looper對象,如果不指定則利用當前線程的Looper建立。
Activity、Looper、Handler,Thread的關係如所示:

一個Activity中可以建立多個背景工作執行緒或者其他的組件,如果這些線程或者組件把他們的訊息放入Activity的主線程訊息佇列,那麼該訊息就會在主線程中處理了。

因為主線程一般負責介面的更新操作,並且Android系統中的widget不是安全執行緒的,所以這種方式可以很好的實現Android介面更新。在Android系統中這種方式有著廣泛的運用。

那麼一個線程怎樣把訊息放入主線程的訊息佇列呢?答案是通過Handle對象,只要Handler對象以主線程的Looper建立,那麼調用Handler的sendMessage等介面,將會把訊息放入隊列都將是放入主線程的訊息佇列。並且將會在Handler主線程中調用該handler的handleMessage介面來處理訊息。

更多Android訊息佇列的資訊請參看: http://my.unix-center.net/~Simon_fu/?p=652

下面這個圖從另外一個角度描述了他們的關係:

參考資料:

Android非同步載入映像小結
http://blog.csdn.net/sgl870927/archive/2011/03/29/6285535.aspx

深入理解Android訊息處理系統——Looper、Handler、Thread

http://my.unix-center.net/~Simon_fu/?p=652

Android執行緒模式(Painless Threading)
http://android.group.iteye.com/group/blog/382683

android線程式控制制UI更新(Handler 、post()、postDelayed()、postAtTime)
http://lepeng.net/blogger/?p=21

Android – Multithreading in a UI environment
http://www.aviyehuda.com/2010/12/android-multithreading-in-a-ui-environment/

Android中的Handler, Looper, MessageQueue和Thread
http://www.cnblogs.com/xirihanlin/archive/2011/04/11/2012746.html

Android Runnable
http://blog.csdn.net/michaelpp/archive/2010/06/30/5704682.aspx

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.