日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

【Android 异步操作】手写 Handler ( 循环者 Looper | Looper 初始化 | Looper 遍历消息队列 MessageQueue )

發布時間:2025/6/17 Android 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【Android 异步操作】手写 Handler ( 循环者 Looper | Looper 初始化 | Looper 遍历消息队列 MessageQueue ) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

  • 一、Looper 初始化
  • 二、Looper 遍歷消息隊列 MessageQueue
  • 三、完整 Looper 代碼





一、Looper 初始化



Looper 是 線程本地變量 , 在每個線程中 , 可以通過線程調用 ThreadLocal 變量的 get 方法獲取該線程對應的對象副本 , 調用 ThreadLocal 變量的 set 方法 , 設置該線程對應類型的對象副本 ;


Looper 調用 prepare 方法進行初始化 , 在該方法中處理 線程本地變量的先關初始化與設置 ,

如果之前已經初始化過 , 本次調用 prepare 方法是第二次調用 , 則會 拋出異常 ,

如果之前沒有初始化過 , 那么創建一個 Looper , 然后調用線程本地變量 ThreadLocal 的 set 方法 , 將該 Looper 對象設置成線程本地變量 ;

/*** 一個線程只能有一個 Looper* 使用 ThreadLocal 來保存該 Looper* 是線程內部存儲類 , 只能本線程才可以得到存儲的數據 ;*/static final ThreadLocal<Looper> sThreadLocal = new ThreadLocal<>();/*** 準備 Looper 方法*/public static void prepare(){System.out.println("prepare 創建 Looper ");// 先進行判斷 , 如果當前線程已經有了 Looper , 那就拋出異常if(sThreadLocal.get() != null){throw new RuntimeException("當前線程已存在 Looper");}// 如果不存在 Looper , 就創建一個 LoopersThreadLocal.set(new Looper());}



二、Looper 遍歷消息隊列 MessageQueue



在 Looper 線程中 , 最后一句代碼肯定是 Looper.loop() , 執行該方法后 , 就開啟了一個無限循環 ,

不斷從 消息隊列 MessageQueue 中獲取消息 , 然后發送給該 消息 Message 對應的 Handler ,

哪個 Handler 發送的消息 , 就將消息在送回給哪個 Handler ;


消息同步 : 當 消息隊列 MessageQueue 為空時 , 無法從消息隊列中獲取數據 , 此時線程會 阻塞 , 直到有新的消息到來后 , 解除阻塞 ;


Looper 循環遍歷消息隊列部分代碼 :

/*** 不斷從 消息隊列 MessageQueue 中取出 Message 消息執行*/public static void loop(){System.out.println("開始無限循環獲取 Message");// 獲取當前線程的 LooperLooper looper = Looper.looper();// 從當前線程的 Looper 獲取 消息隊列 MessageQueueMessageQueue messageQueue = looper.mQueue;// 不斷從 消息隊列中獲取 消息 , 分發到發送消息的 Handler 中執行for(;;){// 獲取消息隊列中的第一個消息Message next = messageQueue.next();// 分發到發送該消息的 Handler 中執行next.target.handleMessage(next);}}



三、完整 Looper 代碼



package kim.hsl.handler;public class Looper {/*** 一個線程只能有一個 Looper* 使用 ThreadLocal 來保存該 Looper* 是線程內部存儲類 , 只能本線程才可以得到存儲的數據 ;*/static final ThreadLocal<Looper> sThreadLocal = new ThreadLocal<>();/*** 消息隊列*/public MessageQueue mQueue;/*** Looper 構造函數*/private Looper(){mQueue = new MessageQueue();}/*** 獲取當前線程對應的 Looper* @return*/public static Looper looper(){return sThreadLocal.get();}/*** 準備 Looper 方法*/public static void prepare(){System.out.println("prepare 創建 Looper ");// 先進行判斷 , 如果當前線程已經有了 Looper , 那就拋出異常if(sThreadLocal.get() != null){throw new RuntimeException("當前線程已存在 Looper");}// 如果不存在 Looper , 就創建一個 LoopersThreadLocal.set(new Looper());}/*** 不斷從 消息隊列 MessageQueue 中取出 Message 消息執行*/public static void loop(){System.out.println("開始無限循環獲取 Message");// 獲取當前線程的 LooperLooper looper = Looper.looper();// 從當前線程的 Looper 獲取 消息隊列 MessageQueueMessageQueue messageQueue = looper.mQueue;// 不斷從 消息隊列中獲取 消息 , 分發到發送消息的 Handler 中執行for(;;){// 獲取消息隊列中的第一個消息Message next = messageQueue.next();// 分發到發送該消息的 Handler 中執行next.target.handleMessage(next);}}}

總結

以上是生活随笔為你收集整理的【Android 异步操作】手写 Handler ( 循环者 Looper | Looper 初始化 | Looper 遍历消息队列 MessageQueue )的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 中文在线字幕免费观 | 欧美女人天堂 | 精品亚洲中文字幕 | 精品在线不卡 | 99re视频在线观看 | 亚洲视频1 | 免费av片 | 国产主播喷水 | 中文字幕二区在线观看 | 无码成人精品区在线观看 | 91pao| 成人免费看片在线观看 | 亚洲女同二女同志 | 18av在线视频 | 欧洲午夜精品 | 午夜一级视频 | 久久精品一二三区 | 欧美熟妇激情一区二区三区 | 69免费| 五月网| 欧美黄色激情视频 | 97超碰中文字幕 | 日韩av线| 午夜伦伦电影理论片费看 | 亚洲色偷偷色噜噜狠狠99网 | 无码国产69精品久久久久网站 | 欧美日本韩国一区 | 成人福利视频在线观看 | 国产夫妻视频 | 亚洲成人精品一区二区三区 | 无码粉嫩虎白一线天在线观看 | 国产超碰人人模人人爽人人添 | 户外少妇对白啪啪野战 | 精品黑人一区二区三区久久 | 国产做爰xxxⅹ久久久精华液 | 久久免费播放视频 | 天天干免费视频 | 国产伦理久久精品久久久久 | 好看的中文字幕av | 成人一区在线观看 | 久久躁日日躁aaaaxxxx | 日本三级视频在线 | 草逼网站 | 国产一区=区 | 国产午夜精品久久 | 高清中文字幕在线a片 | 亚洲第一精品网站 | 欧美精品第1页 | 91国在线视频 | 国产在成人精品线拍偷自揄拍 | 精品国产一区在线观看 | www.天堂av.com| 色戒在线免费 | 性色视频在线观看 | 天天躁夜夜操 | 国产激情av一区二区三区 | 久久99精品国产91久久来源 | 国产一级色 | 91网入口| 成人在线免费观看视频 | 国产女人精品视频 | 久久视频精品在线 | 永久免费看片在线播放 | 四季av国产一区二区三区 | 日韩一区二区视频在线播放 | 免费看欧美一级特黄a大片 国产免费的av | 国产第5页| 欧美一区二区黄片 | 高清视频一区二区 | 日韩欧美偷拍 | 激情五月深爱五月 | 性xxx18 | 91精品网 | 99久久精品免费 | 欧美日本日韩 | 国产污在线观看 | 国产精品久久久免费观看 | 中文字幕mv| 男女涩涩网站 | 五月天视频网 | 91性高潮久久久久久久久 | 熟女肥臀白浆大屁股一区二区 | 羞羞网站在线观看 | 国产亚洲不卡 | 午夜影视av | 老师的肉丝玉足夹茎 | 国产伦精品一区二区三区高清版禁 | 免费黄色网页 | 色呦呦入口 | 97精品视频 | 日本打白嫩屁股视频 | 91亚洲视频 | 亚洲欧美中日韩 | 91成人亚洲 | xxxx黄色| 少妇高潮大叫好爽喷水 | 亚色成人 | 大j8黑人w巨大888a片 | 婷婷综合激情网 |