麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁(yè) > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

菜鳥從源碼分析Handler消息機(jī)制

2019-11-14 09:01:38
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

1.Handler簡(jiǎn)介

Android中規(guī)定只允許在UI主線程當(dāng)中來(lái)操作UI,在子線程中不允許更新UI,而當(dāng)我們需要在子線程中進(jìn)行一些耗時(shí)操作完成后需要更新界面UI,此時(shí)我們?cè)撛趺崔k,這個(gè)時(shí)候我們就可以用到Handler,所以可以說(shuō)Handler的作用是為了通知主線程更新ui,但這只是Handler的一個(gè)作用,只是我們開發(fā)時(shí)常常用Handler來(lái)更新UI而已。在這里很多人會(huì)疑問為什么規(guī)定要只能在主線程更新UI,因?yàn)槎鄠€(gè)子線程來(lái)同時(shí)操作UI的話,則容易造成很多不可知的現(xiàn)象,即線程是不安全的,很多人也會(huì)疑問為啥不用鎖機(jī)制呢,鎖機(jī)制的話有兩個(gè)缺點(diǎn):a、鎖機(jī)制讓UI更新邏輯變得更復(fù)雜 b、鎖機(jī)制會(huì)阻礙一些線程,使更新效率大大降低。

2.Handler消息機(jī)制中關(guān)聯(lián)到的一些類:Looper,MessageQueue,ThreadLocal,Message等

3.Handler源碼分析

首先看構(gòu)造函數(shù)

上面的源碼清晰的說(shuō)明:首先會(huì)獲取當(dāng)前線程的Looper對(duì)象,為null則直接報(bào)錯(cuò),因此在子線程中我們必須自己調(diào)用Looper.PRepare()來(lái)創(chuàng)建Looper對(duì)象,其次獲取到Looper對(duì)象后則獲取looper當(dāng)中的MessageQueue對(duì)象,這兩個(gè)對(duì)象獲取到后對(duì)消費(fèi)的分發(fā)處理則有了保障。這兩個(gè)類后面會(huì)詳細(xì)描述。

接著看我們常用的handmessage方法和sendMessage方法,我們主要說(shuō)這兩個(gè)方法。

這個(gè)handmessage方法我們要實(shí)現(xiàn)的,其實(shí)實(shí)際上是dispatchMessage方法中處理消息,這個(gè)很簡(jiǎn)單,大家應(yīng)該都看得懂。接下來(lái)sendMessage方法:

這個(gè)方法也很簡(jiǎn)單,相信大家都看得懂,簡(jiǎn)單就是調(diào)用MessageQueue的enqueueMessage方法把消息存進(jìn)MessageQueue中。也就是Handler其實(shí)是一個(gè)領(lǐng)導(dǎo)者,它通過協(xié)調(diào)Looper和MessageQueue等進(jìn)行協(xié)同作業(yè)。

4.Looper源碼分析

Looper輪詢器的意思,就是無(wú)限輪詢MessageQueue中的消息,有就發(fā)出來(lái)讓handler處理,沒有就等待中。

同樣看prepare()方法和loop()兩個(gè)關(guān)鍵方法:


發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 久久精品a一级国产免视看成人 | 日韩视频一| 成人免费入口 | 国产精品久久久久久久午夜片 | 91久久综合 | 午夜精品久久久久久久久久久久久蜜桃 | 欧美一级黄色影院 | 久久恋| 成年人在线视频观看 | 成人福利电影在线观看 | 看91视频| 久久久国产一区二区三区 | 爽爽淫人网| 国产成人av免费看 | 91精品国产综合久久婷婷香 | 国产精品一区自拍 | 91一区二区三区久久久久国产乱 | 久久艹精品| 黄色高清av| 日韩精品dvd | 亚洲一区二区免费 | 91短视频版高清在线观看免费 | 国产成人精品区 | 久久国产中文字幕 | 91久久国产露脸精品国产护士 | 国产精品一区自拍 | 黄色一级片免费在线观看 | 一本在线高清码电影 | 一级电影在线观看 | 欧美性色黄大片www 成人免费网站在线观看 | hd性videos意大利复古 | 成人免费福利视频 | 日韩视频1| 日本成人一区二区三区 | 精品国产乱码一区二区三区四区 | 最新在线中文字幕 | 欧美亚洲一级 | 成人福利在线播放 | 九色激情网| 深夜福利视频免费观看 | 色视频在线播放 |