Android的消息机制

来源:互联网 发布:巴塞尔协议 数据要求 编辑:程序博客网 时间:2024/06/01 10:00

1.Handler的作用就是用来解决子线程中无法反问UI的矛盾的,因为UI控件不是线程安全的

2.由3个角色组成来处理消息Message:消息处理者Handler、消息队列MessageQueue(其实内部是链表)、循环执行者Looper

3.可以通过handler的send方法发送消息,它会使MessageQueue调用enqueueMessage的方法将消息放进队列里,然后用next方法读取出数据(读取操作附带删除操作),然后在handleMessage里处理;或者用handler的post方法投递一个Runnable到内部的Looper中去处理,执行的逻辑定义在Runnable里,这种方式的意义就是,创建一个Handler的实例,但是不需要创建它的子类,也就是说不需要去重写父类的handleMessage方法

4.Handler需要线程有Looper才能创建,而线程的Looper是通过一个ThreadLocal的数据储存类来实现获取的

5.Looper使用prepare方法创建,用loop方法开启消息循环;获取主线程的Looper:getMainLooper,在子线程中,要使用Looper的quit方法执行终止消息循环

Handler的处理过程:用handler的send的方法发送一条消息,调用MessageQueue的enqueueMessage方法往队列里放进一条消息,Looper使用loop方法调用MessageQueue的next方法进行消息读取,将消息返回给Looper去处理,Looper最终将消息交由Handler来处理,即调用dispatchMessage的方法

 


原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 郑州居住证凭条怎么办 宿舍虫子咬人怎么办 is语音注册频繁怎么办 苹果id注销了怎么办 网站突然打不开了怎么办 谷歌邮箱打不开怎么办 360借款无力承担怎么办 公司被收购期权怎么办 创业板连续亏损怎么办 国企合并后员工怎么办 资金密码忘记了怎么办? 大华电子秤称重不准怎么办 股票暂停上市散户怎么办 入股公司赔钱了怎么办 家里被虚报脱贫怎么办 技术入股想退股怎么办 想开店没有资金怎么办 想开店资金不够怎么办 要开店没资金怎么办 想开店缺少资金怎么办 刚刚开店没有资金怎么办 有专利没钱投资怎么办 肉牛养殖没资金怎么办 入股分红想撤资怎么办 入股后想退股怎么办 土地使用权到期后怎么办 员工辞职扣工资怎么办 公司老板要跑路不发工资怎么办 撤销撤多了怎么办 中葡股份跌停怎么办 厕所里有蟑螂怎么办 机票生日写错怎么办 户口出生地错了怎么办 护照号填写错误怎么办 鱼缸潜水泵声音大怎么办 股票跌到没钱了怎么办 新浪股票直播室打不开怎么办 st天业股份怎么办 日月股份破发怎么办 凌晨到达泰国机场怎么办 中介收钱不退钱怎么办