亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Android的Looper有什么用

發布時間:2021-12-18 16:41:41 來源:億速云 閱讀:223 作者:iii 欄目:移動開發

本篇內容主要講解“Android的Looper有什么用”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“Android的Looper有什么用”吧!

這里就是告訴mEpollFd,它要監控mWakeReadPipeFd文件描述符的EPOLLIN事件,即當管道中有內容可讀時,就喚醒當前正在等待管道中的內容的線程。

C++層的這個Looper對象創建好了之后,就返回到JNI層的NativeMessageQueue的構造函數,***就返回到Java層的消息 隊 列MessageQueue的創建過程,這樣,Java層的Looper對象就準備好了。有點復雜,我們先小結一下這一步都做了些什么事情:

A. 在Java層,創建了一個Looper對象,這個Looper對象是用來進入消息循環的,它的內部有一個消息隊列MessageQueue對象mQueue;

B. 在JNI層,創建了一個NativeMessageQueue對象,這個NativeMessageQueue對象保存在Java層的消息隊列對象mQueue的成員變量mPtr中;

C.   在C++層,創建了一個Looper對象,保存在JNI層的NativeMessageQueue對象的成員變量mLooper中,這個對象的作用是,當   Java層的消息隊列中沒有消息時,就使Android應用程序主線程進入等待狀態,而當Java層的消息隊列中來了新的消息后,就喚醒Android應  用程序的主線程來處理這個消息。

接著還要通過epoll_ctl函數來告訴epoll要監控相應的文件描述符的什么事件:

  1. [cpp] view plaincopystruct epoll_event eventItem; 

  2. memset(& eventItem, 0, sizeof(epoll_event)); // zero out unused members 

  3. of data field union 

  4. eventItem.events = EPOLLIN; 

  5. eventItem.data.fd = mWakeReadPipeFd; 

  6. result = epoll_ctl(mEpollFd, EPOLL_CTL_ADD, mWakeReadPipeFd, & 

  7. eventItem);

回到ActivityThread類的main函數中,在上面這些工作都準備好之后,就調用Looper類的loop函數進入到消息循環中去了:

[cpp] view plaincopypublic class Looper { ...... public static final void loop() { Looper me = myLooper(); MessageQueue queue = me.mQueue; ...... while (true) { Message msg = queue.next(); // might block ...... if (msg != null) { if (msg.target == null) { // No target is a magic identifier for the quit message. return; } ...... msg.target.dispatchMessage(msg); ...... msg.recycle(); } } } ...... }

這里就是進入到消息循環中去了,它不斷地從消息隊列mQueue中去獲取下一個要處理的消息msg,如果消息的target成員變量為null,就表示要 退出消息循環了,否則的話就要調用這個target對象的dispatchMessage成員函數來處理這個消息,這個target對象的類型為 Handler,下面我們分析消息的發送時會看到這個消息對象msg是如設置的。

到此,相信大家對“Android的Looper有什么用”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

渝北区| 赫章县| 绥宁县| 修武县| 芦山县| 东辽县| 顺平县| 自治县| 蓬莱市| 永寿县| 濉溪县| 丰都县| 富宁县| 巍山| 运城市| 郁南县| 历史| 高碑店市| 金寨县| 咸丰县| 德州市| 喜德县| 英吉沙县| 寿阳县| 原平市| 治多县| 武定县| 深圳市| 乐业县| 淅川县| 武清区| 榆林市| 新昌县| 西贡区| 崇仁县| 桦甸市| 临高县| 秦皇岛市| 盐津县| 讷河市| 璧山县|