Handler Looper MessageQueue HandlerThread

1. MainUI Thread: 已实现了looper;

2. 自定义thread: 在run()中用Looper.prepare()创建thread单例模式looper,存在线程本地存储TLS中,looper有一个私有变量messageQueue;Looper.loop()该thread开始围绕消息队列循环运行,直到looper.quit();当消息队列中没有message时阻塞thread;

3. Handler: 用于向对应thread的messageQueue中发送message;handler中有一个私有变量looper,如不明确复制,通过Looper.myLooper()赋予正在运行的thread的looper和messageQueue;new Handler(Looper.getMainLooper())可以定义向MainUI thread发送message的handler;

4. Message: 消息载体,通过字段what、arg1标识消息,可在handler的handleMessage(msg)中处理msg;

5. HandlerThread:实现了looper的thread,同时同步处理了获取looper的问题;需要获得looper可用该便利类;通过new Handler(handlerThread.getLooper())声明该thread对应的handler;

6. 一个thread只能有一个looper,一个messageQueue,如重复调用Looper.prepare()会抛出RuntimeException;但可有多个handler;

7. Native的支持:4.0为了方便c编程,native层增加了类似Java中的handler-looper-messageQueue机制,但同一个thread中native的处理顺序在Java层之前;

转载于:https://www.cnblogs.com/toven/archive/2012/08/30/2664266.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值