Looper, MessageQueue, Handler, thread关系的简单描述

Looper, MessageQueue, Handler, thread关系的简单描述 2012-07-13 15:07:53


Looper是一个循环,在这个循环里,监视fd(file descrption)的读写事件;

MessageQueue是用来容纳从looper中得到的事件;

Handler是事件的处理对象,其中的HandleEvent()是回调处理函数;

这些Looper, MessageQueue, Handler往往是运行在一个线程thread中。


mMessageQueue->getLooper()->addFd(fd, 0, ALOOPER_EVENT_INPUT, handler, data);


这样looper就会监fd的输入事件(ALOOPER_EVENT_INPUT), 当有事件发生,会以参数data调用handler,handler是const sp<LooperCallback>, 

它里面的handleEvent()被调 用:virtual int handleEvent(int receiveFd, int events, void* data);

创建looper的线程就是最后监视和callback处理的线程。


fd一般用socketpair产生,写fd在写进程里,读fd在这里。a

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值