您的位置:首页 > 移动开发 > Android开发

android消息传递机制---handler

2016-03-31 00:23 537 查看
出于性能优化考虑,Android的UI线程操作并不是安全的,也就是说,几个线程同时操作UI可能会导致线程安全问题,为了解决这个问题,android规定只有UI线程也就是主线程才能修改UI界面,那么当其他线程想要改变UI线程该怎么做呢?这时候就需要Handler消息传递机制。。。

原料: Handler类,MessageQueue类,Looper类

Looper : 每一个类至多只有一个Looper,他负责管理 MessageQueue,会不断将MessageQueue中的消息往Handler分发(消息分发靠的是loop()函数)

构造函数如下:

private Looper() {

mQueue = new MessageQueue();

mRun = true;

mThread = Thread.getCurrentThread();

}

private意为着不能直接new该对象,也就是说想要new该对象必须调用Looper,prepare()方法。

MessageQueue:由Looper管理的储存消息的队列。

Handler:负责往对应的Looper管理的MessageQueue发送消息,也负责处理Looper分发过来的消息。

注意:因为在主线程中系统已经初始化了一个Looper,所以并不需要new相关的Looper及其相关的函数。

在非主线程中使用Handler步骤:

1. 调用Looper的prepare()函数为当前线程创建一个Looper对象(它的构造器会自动创建相关的MessageQueue)

2.创建Handler子类的实现,重写其handlerMassage()方法,这个方法是负责处理传过来的信息的

3.调用Looper.loop()方法启动Looper;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: