android学习之handler_移动开发_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > 移动开发 > android学习之handler

android学习之handler

 2013/11/27 15:27:53  下下一个  博客园  我要评论(0)
  • 摘要:Android的UI是单线程(Single-threaded)的。为了避免拖住GUI,一些较费时的对象应该交给独立的线程去执行。如果幕后的线程来执行UI对象,Android就会发出错误讯息CalledFromWrongThreadException。以后遇到这样的异常抛出时就要知道怎么回事了!Message(消息):理解为线程之间交流的信息。发送message信息更新UIhander:message(消息)的主要处理着,负责消息的发送sendMessage(Message)
  • 标签:android 学习 Handler

 Android的UI是单线程(Single-threaded)的。为了避免拖住GUI,一些较费时的对象应该交给独立的线程去执行。如果幕后的线程来执行UI对象,Android就会发出错误讯息 CalledFromWrongThreadException。以后遇到这样的异常抛出时就要知道怎么回事了!

 

Message(消息): 理解为线程之间交流的信息。发送message信息 更新UI

hander :  message(消息)的主要处理着,负责消息的发送sendMessage(Message),和message内容的处理 handleMessage(Message) [主要用于更新UI]

Message Queue(消息队列)  : 用于存放handler发布的消息 ,按照先进先出执行  , 

1.每个message queue都会有一个对应的Handler。

2.Handler会向message queue通过两种方法发送消息:sendMessage或post 

这两种消息都会插在message queue队尾并按先进先出执行。但通过这两种方法发送的消息执行的方式略有不同:通过sendMessage发送的是一个message对象,会被Handler的handleMessage()函数处理;而通过post方法发送的是一个runnable对象,则会自己执行。 

Looper:Looper是每条线程里的Message Queue的管家   Android会自动替主线程(UI线程)建立Message Queue,但在子线程里并没有建立Message Queue。所以调用Looper.getMainLooper()得到的主线程的Looper不为NULL,

 

上一篇: sh+tomcat 启动时报内存溢出 下一篇: 没有下一篇了!
发表评论
用户名: 匿名