您的位置:首页 > 其它

Handler消息处理机制

2015-11-07 14:35 232 查看
核心思想,在一个线程发送消息,在另一个线程接受消息并处理。

发送消息的线程一般不能进行一些耗时的作业,所以交由另一个线程(处理消息的进程)进行处理。

Handler:和looper进行交流,处理looper从messagequeueu取出的事件分发给handler,发送message给looper;

Looper:循环消息队列,构造方法中构造了一个messagequeue.内涵循环不断取出消息

messagequeue:采用先进先出的方式存储message

message: 通过设定 obj, what ,等字段存储并运输消息

注意主线程 即UI线程中 系统已经初始化了一个Looper. 所以我们在主线程中处理消息(主线程中一般处理UI更新方面的消息)直接创建Handler对象并覆写Handler处理消息的方法即可。

而 子线程即自己创建的线程,如果作为处理消息的进程,则我们需要进行以下处理:

1调用Looper的prepare()方法为当前进程创建Looper对象()创建对象的同时构造器方法会 自动创建MessageQueue。

2创建Handler对象,并覆写Handler处理方法。用来处理其他线程发送的消息。

3调用Looper的loop方法启动looper.

细节心得:其中massge对象常与bundler连用 进行数据的发送,匹配消息时用msg.what 标记进行匹配。将子线程定义在内部类中方便查找子线程的handler.

Message ms= mhandler.obtainMessage();
ms.what = SEND_ROCK;
mhandler.obtainMessage().sendToTarget();
//这种Masage方式减少内存开销。

注意:导包是 os.handler包!!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: