A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 张乐 中级黑马   /  2016-5-9 14:38  /  6095 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

1黑马币
想必做安卓的朋友们对Handler都不陌生,今天突然想到一个问题,Handler到底是运行在主线程还是子线程呢?问了几位朋友,得到的答案都不一样,请大神帮忙解答一下稍微详细一些,多谢!

8 个回复

倒序浏览
http://mp.weixin.qq.com/s?__biz=MzA5MTE1NTE5NQ==&mid=405322810&idx=1&sn=65d605b60aeb6d97924dc1f932838196&scene=0&from=singlemessage&isappinstalled=0#wechat_redirect
回复 使用道具 举报
过来学习一下,
回复 使用道具 举报
顶一下先、、、
回复 使用道具 举报
应该是主线程吧
回复 使用道具 举报
主线程。我所知道的是,子线程无法对UI的数据进行修改,只有主线程才能对UI进行修改,所以就用Handler类中的handleMessage()方法对UI进行修改。
回复 使用道具 举报
是的,handle运行在主线程里
回复 使用道具 举报
一个Handler允许你发送和处理Message和Runable对象,每个线程都有自己的Looper,每个Looper中封装着MessageQueue。Looper负责不断的从自己的消息队列里取出队头的任务或消息执行。每个handler也和线程关联,Handler负责把Message和Runable对象传递给MessageQueue(用到post ,sendMessage等方法),而且在这些对象离开MessageQueue时,Handler负责执行他们(用到handleMessage方法)。
其中Message类就是定义了一个信息,这个信息中包含一个描述符和任意的数据对象,这个信息被用来传递给Handler.Message对象提供额外的两个int域和一个Object域。
回复 使用道具 举报
齐浩 中级黑马 2017-2-20 14:34:12
9#
handler是运行在两个线程的,handler把子线程的数据发送到主线程来使用。。他是在子线程和主线程的一个循环结构,想想looper就可以了。。。handler只是一个搬运工。。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马