日本搞逼视频_黄色一级片免费在线观看_色99久久_性明星video另类hd_欧美77_综合在线视频

國內最全IT社區平臺 聯系我們 | 收藏本站
阿里云優惠2
您當前位置:首頁 > php開源 > 綜合技術 > 單線程模型中Message、Handler、MessageQueue、Looper之間的關系

單線程模型中Message、Handler、MessageQueue、Looper之間的關系

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

Handler有兩個主要的用處:

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

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


Scheduling Message
,即(1),可以通過以下方法完成:
post(Runnable):Runnable
handler綁定的線程上履行,也就是說不創建新線程。
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個精確的時間去處理。后二者允許你實現timeout,tick,和基于時間的行動。

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


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


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


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

大多數和message loop的交互是通過Handler

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

生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 国产精品一区二区三区四区在线观看 | 91偷拍精品一区二区三区 | 日本大片免a费观看视频的特点 | 国产免费a | 国产精品久久久久久久久久东京 | 国产一区二区视频在线播放 | 成人免费视频网站在线看 | 一区二区三区回区在观看免费视频 | 国产在线视频91 | 一区二区成人在线 | 91精品一区二区三区久久久久久 | 在线观看久 | 亚洲高清在线免费观看 | 久久av免费看| 国产观看| 91精品国产综合久久久久 | 精品美女久久久久 | 亚洲精选一区 | 一级片久久 | 成人手机在线免费视频 | 亚洲精品观看 | 国产成人午夜精品5599 | 精品三级在线观看 | 国产九九精品 | 尤物精品| 亚洲国产精品99久久久久久久久 | 国产精品视频42页 | 91理论电影 | 精久久久久久 | www精品 | 欧美一级黄色片子 | 青青草一区二区 | 久久九九免费 | 中国三级网站 | 亚洲播播 | 国产高清在线精品 | 淫伦小说短篇合集 | 国产欧美久久一区二区三区 | 欧美成人日韩 | 一区二区三区在线观看视频 | 在线观看免费av网 |