Android 消息机制 以及Message、Handler、Message Queue、Looper之间的关系。

来源:互联网 发布:淘宝网站首页源代码 编辑:程序博客网 时间:2024/05/21 05:55

关系:

Message消息对象,MessageQueue存放Message的载体,Looper就是无线循环查找MessageQueue中是否有消息,Handler就是创建的时候会使用Looper来构建消息循环。


工作原理:

创建handler的线程中一定有个looper,不然就会报错。

Handler使用方法有2个,一个是post,一个是send。Post最终也是调用send的方法。Send方法会调用MessageQueue的enqueuemessage的方法,把消息放入队列。此时looper是个无线循环,会无线循环从队列中取出消息,取出后,消息中的runnable或handler的handlermessage方法就会被调用。

注:

Looper是运行在创建handler的线程中的,所以会吧这个消息给在同一线程的handler处理。

不需要的时候记得终止looper。因为如果你手动处理完毕你需要的业务逻辑以后 如果不调用quit或者quitsafely方法 looper的loop方法就一直执行下去,永远不停止,你这个子线程永远都结束不了。很容易就内存泄露或者其他错误,所以我们要牢记 当子线程使用looper的时候 业务处理完毕记得手动关闭looper。

0 0
原创粉丝点击