博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
android学习之handler
阅读量:4568 次
发布时间:2019-06-08

本文共 779 字,大约阅读时间需要 2 分钟。

 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,

 

转载于:https://www.cnblogs.com/xiaxiayige/p/3445517.html

你可能感兴趣的文章
最长回文子串
查看>>
JAVA基础-JDBC(一)
查看>>
js中for和while运行速度比较
查看>>
算法第5章作业
查看>>
7.9 练习
查看>>
基于ArcGIS JS API的在线专题地图实现
查看>>
learnByWork
查看>>
lua 函数
查看>>
Git的基本命令
查看>>
四平方和
查看>>
第十八周 12.27-1.2
查看>>
C# IP地址字符串和数值转换
查看>>
TCHAR和CHAR类型的互转
查看>>
常用界面布局
查看>>
C语言—— for 循环
查看>>
IBM lotus9.0测试版即将公测
查看>>
xml常用方法
查看>>
Cube Stacking(并差集深度+结点个数)
查看>>
AndroidStudio3更改包名失败
查看>>
jq 删除数组中的元素
查看>>