消息机制

来源:互联网 发布:Java的官网 编辑:程序博客网 时间:2024/06/06 02:23

如上一篇文章提到的,UI必须都在主线程中刷新,包括吐司提示框(toast)

发送消息,需要知道消息是可以携带数据的,即msg.obj,发送消息有两种情况:
1 发送携带信息的消息,这种情况必须创建消息对象
2 发送空消息,当发送的消息不需要携带信息时,就发送空消息
消息的创建,一般是不需要new的,而是用到 Message msg = handler.obtainmessage(); 用这种方法,如果消息池有消息,即取出,没有,则new一个新的
发送消息,如何区别消息是成功还是失败呢?这里用到了msg.what,这个属性是用来定义消息的类型的
例如 msg.what = 1   msg.what = 2   然后用switch来区分操作。

下面来总结一下消息队列
当主线程创建后,就会同时生成messageQueue(消息队列)和Looper(消息轮询器)对象
如果需要使用消息机制,需要手动创建handler(消息处理器)
轮询器会不断询问消息队列中是否有消息,有消息就会立马发送给handler对象
handler对象拿到消息,就会立马执行handlermessage方法。

0 0