Android的消息机制与异步任务

2020-02-06  本文已影响0人  Chenstyle

消息机制的引入

如何实现线程间通信呢?

Message的使用

message是线程间通信的数据载体

Message.obtain();  // 有可能是新建的,也可能是复用消息池中
int what; // 标识
int args1; // 用于保存int数据
int args2; // 用于保存int数据
Object obj; // 用于保存对象数据

Handler target; // 保存处理消息的handler(发消息的handler)
long when; // 消息应该被处理的时间
Message next; // 有了此属性Message就可以形成队列
static Message pool; // 消息池 缓存用过的消息用于复用
Runnable callBack; // 用于处理当前消息的回调器

Handler的使用

发送/处理/移除消息

// a.发送消息
    发送即时消息:sendMessage(Message message);
    发送延迟消息:sendMessageDelayed(Message message, long delayTime);
    发送空消息:sendEmptyMessage(int what);
    发送延迟消息:sendEmptyMessageDelayed(int what, long delayTime);
// b.处理消息
    void HandleMessage(Message msg); // 回调方法
// c.移除消息
    removeMessage(int what); // 移除指定what的未处理message
    removeCallbacksAndMessage(Object token); // 如果token传null,移除所有未处理的消息

MessageQueue:消息队列

Looper:循环器

Handler的原理

上一篇 下一篇

猜你喜欢

热点阅读