成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Android應用程序消息處理機制(Looper、Handler)分析(5)

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

這里就是告訴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函數進入到消息循環中去了:

  1. [cpp] view plaincopypublic class Looper { 
  2. ...... 
  3. public static final void loop() { 
  4. Looper me = myLooper(); 
  5. MessageQueue queue = me.mQueue; 
  6. ...... 
  7. while (true) { 
  8. Message msg = queue.next(); // might block 
  9. ...... 
  10. if (msg != null) { 
  11. if (msg.target == null) { 
  12. // No target is a magic identifier for the quit message. 
  13. return
  14. ...... 
  15. msg.target.dispatchMessage(msg); 
  16. ...... 
  17. msg.recycle(); 
  18. ...... 

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

責任編輯:閆佳明 來源: bbs.9ria
相關推薦

2014-05-22 15:00:16

Android消息處理機制Looper

2014-05-22 15:04:00

Android消息處理機制Looper

2014-05-22 15:07:44

Android消息處理機制Looper

2014-05-22 15:38:27

Android消息處理機制Looper

2014-05-22 15:48:50

Android消息處理機制Looper

2014-05-22 15:41:59

Android消息處理機制Looper

2014-05-22 14:57:28

Android消息處理機制Looper

2014-05-22 15:18:25

Android消息處理機制Looper

2014-05-22 15:33:31

Android消息處理機制Looper

2014-05-22 15:45:58

Android消息處理機制Looper

2011-04-28 11:01:40

Android消息處理LooperHandler

2011-11-23 09:33:45

HandlerLooperMessage

2014-05-27 10:13:57

移動技術半月刊

2016-10-21 13:03:18

androidhandlerlooper

2011-09-05 17:40:40

MTK定時器

2011-03-17 09:20:05

異常處理機制

2021-08-12 16:28:10

AndroidHandleLooper

2009-07-17 10:42:06

Swing應用程序處理函數

2023-06-15 14:09:00

解析器Servlet容器

2023-03-08 08:54:59

SpringMVCJava
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 久久躁日日躁aaaaxxxx | 欧美精品一区在线 | 97精品久久| 国产激情第一页 | 亚洲手机在线 | 久久精品综合 | 国产精品国产精品国产专区不片 | 亚洲精品在线视频 | 国产探花在线精品一区二区 | 久久综合伊人一区二区三 | 亚洲最新网址 | 两性午夜视频 | 91在线观看免费 | 草久久久 | 久久久高清 | 国产成人啪免费观看软件 | 电影午夜精品一区二区三区 | 国产精品高潮呻吟久久久久 | 精品国产乱码久久久久久老虎 | 亚洲一区二区视频在线播放 | 日韩在线视频一区二区三区 | 精品欧美一区二区三区精品久久 | 日韩乱码一二三 | 色婷婷综合久久久久中文一区二区 | 日本精品一区二区在线观看 | 日韩在线播放一区 | 欧美在线视频一区二区 | 99pao成人国产永久免费视频 | 狠狠天天 | 91在线网 | 精品国产免费一区二区三区五区 | 亚洲一二三区在线观看 | 国产精品一区二区久久久久 | 一区二区av | 久久久久国产精品一区二区 | 欧美一区二区三区在线 | 女同久久另类99精品国产 | 欧美精品久久久久久久久老牛影院 | 国产乱码精品一区二区三区中文 | 国产乱码精品一区二区三区五月婷 | 美日韩精品 |