首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > Android >

Android开发-多线程中的Handler机制/Looper的引见

2013-01-28 
Android开发--多线程中的Handler机制/Looper的介绍在多线程的开发中,Handler机制如同在主线程中运行一样,

Android开发--多线程中的Handler机制/Looper的介绍

    在多线程的开发中,Handler机制如同在主线程中运行一样,只是需要注意在非主线程中Handler机制的作用限制,本文将对这些内容作出解释。

* 如果应用上一个例子的方法对UI界面进行操作,将抛出异常,为此,Android中引入了Handler消息
 * 传递机制,来实现在新创建的线程中操作UI界面,下面将对Handler消息传递机制进行介绍
 * 一.
 * 循环者Looper简介
 * 1.首先需要知道一个概念,那就是MessageQueue,在Android中,一个线程对应一个Looper对象
 * ,而一个Looper对象又对应一个MessageQueue(消息队列)。MessageQueue用于存放Message,
 * 在MessageQueue中,存放的消息以队列的模式执行。
 * 2.Looper对象用来为一个线程开启一个消息循环,用来操作MessageQueue。默认情况下,Android
 * 中新创建的线程是没有开启消息循环的,但是主线程除外,系统自动为主线程创建Looper对象,开启消息循环。
 * 所以,在主线程中,应用下面的代码创建Handler对象时,不会出错,而如果在新创建的非主线程中,应用下面
 * 的代码创建Handler对象时,将产生异常信息。
 * 如果想要在非主线程中,创建Handler对象,首先要使用Looper类的prepare()方法来初始化一个
 * Looper对象,然后创建这个Handler对象,再使用Looper对象的loop()方法,启动Looper,从消息队列里
 * 获取和处理消息。
 * 3.Looper对象
 * 提供了几个方法:
 * prepare()----用于初始化Looper
 * loop()----用于开启消息循环,当调用了loop()方法后,Looper线程就真正的开始工作了,它会从消息队列中
 * 获取消息并处理消息
 * quit()----用于结束Looper消息循环
 * 
 * 注意:
 * 下载loop()之后的代码不会被执行,这个函数内部是一个消息循环,除非调用quit()方法,loop()才会终止,
 * 其后面的代码才能得以运行。

源代码如下:

onCreate()方法:


但是,如果没有对Looper的声明,运行就会抛出如下的异常:

Android开发-多线程中的Handler机制/Looper的引见

所以,在实际的应用中,应考虑Handler在哪一个线程的中的实现。

热点排行