handler

来源:互联网 发布:linux安装最新wine 编辑:程序博客网 时间:2024/06/05 03:07

主要使用方法

sendMessage(message)//发送消息sendMessageDelayed(message, time)//延时发送消息new Handler(){    handleMessage(Message msg){}//接收msg}post(runable)//主线程中更新UIpostDelayed(runable, time)//延时主线程中更新UIobtainMessage//获得handler中的message返回一个新的message//sendToTaget()同sendMessage()移除removeCallbacks,removeMessagesnew Handler(new Callback(){    handleMessage(Message msg){}//在callback拦截消息,若return true 则Handler中的handleMessage不再执行})

为什么主线程才能更新UI?
多线程并发,循序更新UI,不会错乱,易于开发
Handler负责发送消息,封装发送消息方式和目标。
Looper时消息的载体,包含一个MessageQueue容器,Looper.looper无限循环获取消息,没有则阻塞,并返回消息给Handler

线程同步HandlerThread//下载网络图片,更新数据库信息(耗时)

HandlerThread handlerThread = new HandlerThread();//在loop为空时会getLooper等待直到创建后才完成new Handler(handlerThread.getLooper());

更新UI的方式

    1)handler.sendMessage()//handler最常用的方法    2handler.post(runnable)//本质时发送message,runnable作为callback    3)activity.runOnUiThread(runnable)//调用activity的handler线程执行post    4view.post(runnable)//ViewRootImpl.获取handler

非UI线程更新ui
在onCreate中的线程直接更新ui。原理,对于线程更新ui的验证类接口ViewRootImpl的初始化时在onResume中进行的,故在onCreate线程中直接更新ui有可能成功。onResume执行之后(比如线程耗时操作了)则会报错。

0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 练完普拉提头晕怎么办 生完孩子腰背疼怎么办 宝宝不肯把屎尿怎么办 存的电话删除了怎么办 脚踝的韧带断了怎么办 买了双鞋子想退怎么办 鞋子大了一码怎么办 nba篮球大师身体素质满了怎么办 钉鞋大了一码怎么办 篮球鞋鞋垫会向里面跑怎么办 穿高跟鞋脚肿了怎么办 衣服弄到单车油怎么办 高低床孩子摔下来怎么办 量血压时老紧张怎么办 牛仔外套的扣子掉了怎么办 裤子的裤筒大了怎么办 衣服拉链驰坏了怎么办 小脚裤裤腿紧了怎么办 地垫粘地板了怎么办 棉麻衬衣皱了怎么办 麻料衣服烫皱了怎么办 在京东买一双奥康鞋没有防伪怎么办 足球鞋丁掉了一颗怎么办 鼻子有点大想变小该怎么办 阿勒泰小东沟风景区边防证怎么办 孩子上一年级了学习很差怎么办 孩子作息时间不规律怎么办 冬天冻脸怎么办小妙招 冬天冻脚怎么办小妙招 冬天脚冷怎么办小妙招 初中生不爱学习父母该怎么办 早孕办公室买新办公桌怎么办 一年级学生专注度差怎么办 pscs6界面字体太小怎么办 psd文件打不开程序错误怎么办 经常熬夜皮肤暗黄怎么办 炎症引起的经期不来怎么办 父母沉迷于炒股该怎么办 宝宝嘴周边红了怎么办 后背被嘴吸出牙印怎么办 宝宝嘴巴周围长湿疹怎么办