android 酷狗代码,广州酷狗计算机科技在线测评题 Android岗位(示例代码)

1 Handler机制

异步消息处理线程启动后会进入一个无限的循环体中 每循环一次 从其内部的消息队

列中取出一个消息 然后回调相应的消息处理函数 执行完成一个消息后则继续循环

若消息队列为空 线程阻塞等待

代码执行流程

1、首先Looper.prepare()在本线程中保存一个Looper实例,然后该实例中保存一个

MessageQueue对象;因为Looper.prepare()在一个线程中只能调用一次,所以

MessageQueue在一个线程中只会存在一个。

2、Looper.loop()会让当前线程进入一个无限循环,不端从MessageQueue的实例中读

取消息,然后回调msg.target.dispatchMessage(msg)方法。

3、Handler的构造方法,会首先得到当前线程中保存的Looper实例,进而与Looper实

例中的MessageQueue想关联。

4、Handler的sendMessage方法,会给msg的target赋值为handler自身,然后加入

MessageQueue中。

5、在构造Handler实例时,我们会重写handleMessage方法,也就是

msg.target.dispatchMessage(msg)最终调用的方法。

Message 是在线程之间传递的消息,它可以在内部携带少量的信息,用于在不同线程

之间交换数据

Message 的what 字段,除此之外还可以使用arg1 和arg2 字段来携带一些整型

数据,

使用obj 字段携带一个Object 对象

Handler 处理者 主要是用于发送和处理消息的 发送消息一般是使用Handler 的

sendMessage()方法,

而发出的消息经过一系列地辗转处理后,最终会传递到Handler 的

handleMessage()方法中

MessageQueue

消息队列 存放所有通过Handler 发送的消息。这部分消息会一直存在于消息队

列中,等待被处理。

每个线程中只会有一个MessageQueue对象

Looper

每个线程中的MessageQueue 的管家,调用Looper 的loop()方法后,就会

进入到一个无限循环当中,然后每当发现MessageQueue 中存在一条消息,就会

将它取

出,并传递到Handler 的handleMessage()方法中。每个线程中也只会有一个

Looper 对象

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值