最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

抖音短視頻系統(tǒng)開發(fā),消息機制的原理細節(jié)處理

2020-08-27 14:32 作者:yunbaoKJ  | 我要投稿


對于Android抖音短視頻系統(tǒng)開發(fā)來說,Binder和Handler是兩大利劍,分別實現(xiàn)了進程間和線程間的通訊。Android的消息機制,主要包括Hander,Looper,Message和MessageQueue四個數(shù)據(jù)類型,但從概念上講,核心是線程和消息隊列,一切操作圍繞某個線程和它對應的消息隊列展開,抖音短視頻系統(tǒng)開發(fā)常用Handler,Looper,MessageQueue這三個類都會和同一個線程綁定。主要原理為通過Threadlocal讓每個線程具備了一個消息隊列,消息隊列一方面作為存儲消息的數(shù)據(jù)結構,另一方面負責消息具體的入列,出列,阻塞等核心操作;而Handler負責將消息發(fā)送到相應線程的消息隊列中,并對出列的消息進行處理;而Looper則通過循環(huán),不斷的嘗試獲取消息并對獲取到的消息進行分發(fā),交給消息對應的target(Handler)來處理,然后在消息處理完畢后進行回收,回收到消息池中。

?

所以通過消息機制,可以實現(xiàn)線程間的通信,進行數(shù)據(jù)的傳遞;也可以作為線程間通信的協(xié)議,讓一個線程通知另一個線程執(zhí)行某段業(yè)務邏輯。同時,也可以實現(xiàn)線程切換,執(zhí)行延遲,循環(huán)執(zhí)行的操作。

?

這四個數(shù)據(jù)類型中,抖音短視頻系統(tǒng)開發(fā)接觸最多的是Hander。?Handler是消息機制中我們接觸最多的類,可以理解為消息機制的調(diào)度器。它會和某個線程及相應的消息隊列綁定在一起,負責向這個線程的消息隊列里發(fā)送消息,并對出列的消息進行處理。和哪個線程綁定在一起,就會向哪個線程的消息隊列里發(fā)送消息,同時處理消息的代碼也就在哪個線程里執(zhí)行,但是可以從其他任意一個線程向該線程發(fā)送消息。


抖音短視頻系統(tǒng)開發(fā)Android的消息機制,從概念上來講,核心是圍繞消息隊列展開的。通過ThreadLocal,讓每個Thread具備一個消息隊列,然后才展開對消息隊列相關的操作處理。而源碼中,消息隊列是通過Looper來添加的。

?

Message,消息,它的作用可以從兩方面來理解,一方面可以理解為攜帶任意數(shù)據(jù)信息的對象,在線程建進行數(shù)據(jù)/消息傳遞;另一方面,可以理解為線程間通信的協(xié)議,將協(xié)議的關鍵信息封裝到Message對象中,另外一個Thread接收到了之后進行解析,然后執(zhí)行相應的業(yè)務邏輯。

?

?接下來,我們涉及到了消息機制的核心消息隊列MessageQueue。MessageQueue雖然翻譯過來是隊列,但數(shù)據(jù)結構是單鏈表,以mMessages作為頭元素,Message的next為下一個指針。它負責完成消息機制的核心操作,包括消息入列,出列,刪除消息,是否包含某個消息以及退出等。


除此之外,??抖音短視頻系統(tǒng)開發(fā)MessageQueue內(nèi)部還有上面這幾個函數(shù),用于判斷是否包含某個消息,以及刪除消息,實現(xiàn)比較簡單。

聲明:以上內(nèi)容為云豹科技作者本人原創(chuàng),未經(jīng)作者本人同意,禁止轉(zhuǎn)載,否則將追究相關法律責任


抖音短視頻系統(tǒng)開發(fā),消息機制的原理細節(jié)處理的評論 (共 條)

分享到微博請遵守國家法律
会泽县| 咸阳市| 通江县| 东安县| 普兰店市| 江永县| 怀集县| 新营市| 加查县| 林甸县| 黄石市| 张家川| 稷山县| 从江县| 盐津县| 章丘市| 田阳县| 洛浦县| 金平| 绥德县| 宜丰县| 吴忠市| 青州市| 从江县| 凤庆县| 酉阳| 瑞金市| 岐山县| 叙永县| 铜川市| 安顺市| 中山市| 襄汾县| 靖西县| 齐齐哈尔市| 皋兰县| 巴青县| 秭归县| 班玛县| 胶州市| 莎车县|