多多色-多人伦交性欧美在线观看-多人伦精品一区二区三区视频-多色视频-免费黄色视屏网站-免费黄色在线

國內(nèi)最全IT社區(qū)平臺 聯(lián)系我們 | 收藏本站
阿里云優(yōu)惠2
您當前位置:首頁 > php開源 > 綜合技術(shù) > 單線程模型中Message、Handler、MessageQueue、Looper之間的關(guān)系

單線程模型中Message、Handler、MessageQueue、Looper之間的關(guān)系

來源:程序員人生   發(fā)布時間:2014-12-19 08:23:41 閱讀次數(shù):2521次
Handler簡介:
1個Handler允許你發(fā)送和處理MessageRunable對象,這些對象和1個線程的MessageQueue相干聯(lián)。每個線程實例和1個單獨的線程和該線程的MessageQueue相干聯(lián)。當你創(chuàng)建1個新的Handler時,它就和創(chuàng)建它的線程綁定在1起了。這里,線程我們也能夠理解為線程的MessageQueue。從這1點上來看,HandlerMessageRunable對象傳遞給MessageQueue,而且在這些對象離開MessageQueue時,Handler負責履行他們。

Handler有兩個主要的用處:

1)肯定在將來的某個時間點履行1個或1些MessageRunnable對象。

2)在其他線程(不是Handler綁定線程)中排入1些要履行的動作。


Scheduling Message
,即(1),可以通過以下方法完成:
post(Runnable):Runnable
handler綁定的線程上履行,也就是說不創(chuàng)建新線程。
postAtTime(Runnable,long):
postDelayed(Runnable,long):
sendEmptyMessage(int):
sendMessage(Message):
sendMessageAtTime(Message,long):
sendMessageDelayed(Message,long):
post
這個動作讓你把Runnable對象排入MessageQueue,MessageQueue遭到這些消息的時候履行他們,固然以1定的排序。sendMessage這個動作允許你把Message對象排成隊列,這些Message對象包括1些信息,HandlerhanlerMessage(Message)會處理這些Message.固然,handlerMessage(Message)必須由Handler的子類來重寫。這是編程人員需要作的事。

postingsending到1個Hanler時,你可以有3種行動:當MessageQueue準備好就處理,定義1個延遲時間,定義1個精確的時間去處理。后二者允許你實現(xiàn)timeout,tick,和基于時間的行動。

當你的利用創(chuàng)建1個新的進程時,主線程(也就是UI線程)自帶1個MessageQueue,這個MessageQueue管理頂層的利用對象(像activities,broadcast receivers等)和主線程創(chuàng)建的窗體。你可以創(chuàng)建自己的線程,并通過1個Handler和主線程進行通訊。這和之前1樣,通過postsendmessage來完成,差別在于在哪個線程中履行這么方法。在恰當?shù)臅r候,給定的RunnableMessage將在HandlerMessageQueue中被Scheduled


Message
簡介:
Message
類就是定義了1個信息,這個信息中包括1個描寫符和任意的數(shù)據(jù)對象,這個信息被用來傳遞給Handler.Message對象提供額外的兩個int域和1個Object域,這可讓你在大多數(shù)情況下不用作分配的動作。
雖然Message的構(gòu)造函數(shù)是public的,但是獲得Message實例的最好方法是調(diào)用Message.obtain(),Handler.obtainMessage()方法,這些方法會從回收對象池中獲得1個。


MessageQueue
簡介:
這是1個包括message列表的底層類。Looper負責分發(fā)這些messageMessages其實不是直接加到1個MessageQueue中,而是通過MessageQueue.IdleHandler關(guān)聯(lián)到Looper
你可以通過Looper.myQueue()從當前線程中獲得MessageQueue


Looper
簡介:
Looper
類被用來履行1個線程中的message循環(huán)。默許情況,沒有1個消息循環(huán)關(guān)聯(lián)到線程。在線程中調(diào)用prepare()創(chuàng)建1個Looper,然后用loop()來處理messages,直到循環(huán)終止。

大多數(shù)和message loop的交互是通過Handler

下面是1個典型的帶有Looper的線程實現(xiàn)。
  
class LooperThread extends Thread { public Handler mHandler; public void run() { Looper.prepare(); mHandler = new Handler() { public voidhandleMessage(Message msg) { // process incomingmessages here } }; Looper.loop(); } }

生活不易,碼農(nóng)辛苦
如果您覺得本網(wǎng)站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關(guān)閉
程序員人生
主站蜘蛛池模板: 亚洲精品福利在线观看 | 波多野结衣一级视频 | 亚洲欧美日韩国产精品久久 | 久久精品成人 | 欧美日韩国产一区二区三区欧 | 一区二区不卡不卡一卡 | 日韩爽爽影院 | 午夜欧美日韩 | 日韩偷拍自拍 | 亚洲成人免费 | 波多野结衣一区二区三区88 | 国产精品亚洲综合一区在线观看 | 女性一级全黄生活片在线播放 | 国产久7精品视频 | 亚州不卡 | 午夜在线视频观看版 | 大香线蕉97久久 | 国产91色在线 | 亚洲 | 欧美精品一区二区三区免费观看 | 精品国产一区二区 | 东方伊人免费在线观看 | 久久综合精品国产一区二区三区 | 一区二区视频 | 深夜影院深a久久 | 久久久久日韩精品无 | 免费麻豆国产一区二区三区四区 | 午夜影院在线免费观看 | 91精品国产99久久 | 亚洲午夜久久久久中文字幕 | 欧美一区二区三区四区在线观看 | freexx性hd| 国产欧美一区二区三区久久 | 午夜dj高清中文免费观看 | 国产成人久久精品区一区二区 | www.伊人.com | 欧美视频一级 | 26uuu色噜噜欧美在线播放 | 国产成人精品亚洲午夜麻豆 | 性欧美video另类hd人妖 | 性欧美18一19sex性高清播放 | 狠狠躁天天躁 |