android Handler的施用(一)

android Handler的使用(一)Handler的使用(一)Handler基本概念:Handler主要用于异步消息的处理:当发出一个

android Handler的使用(一)
Handler的使用(一)

Handler基本概念:
Handler主要用于异步消息的处理:当发出一个消息之后,首先进入一个消息队列,发送消息的函数即刻返回,而另外一个部分逐个的在消息队列中将消息取出,然后对消息进行出来,就是发送消息和接收消息不是同步的处理。
这种机制通常用来处理相对耗时比较长的操作。

使用一个例子简单的来介绍一下Handler。
示例1:一个应用程序中有2个按钮(start、end),当点击start按钮时,执行一个线程,这个线程在控制台输出一串字符串,并且每隔3秒再执行一次线程,直到点击end按钮为止,线程停止。
下图为这个应用程序的界面:



下图为执行程序时控制台的输出:



开发步骤:
1、新建一个Android应用程序
2、在布局文件中添加2个Button控件标签,并为其设置属性和值
3、在Activity中,声明控件变量并根据id获得控件对象
4、在Activity中,创建一个Handler对象
5、在Activity中,创建一个Runnable对象
a)以匿名内部类的方式
b)将要执行的操作写在Runnable对象中的run()方法中
i.打印出一句话
ii.调用Runnable对象的postDelayed()方法
6、在Activity中,编写start按钮需要的监听器,并绑定
a)在这个监听器的Onclick()方法中,调用Handler的post()方法,将要执行的线程对象放到队列当中。
7、在Activity中,编写end按钮需要的监听器,并帮定
a)在这个监听器的Onclick()方法中,调用Handler的removeCallbacks ()方法,删除队列当中未执行的线程对象。
b)
下面是Activity的代码:



开发步骤:
1、新建一个Android应用程序
2、在布局文件中添加一个progressBar和一个Button,并为其设置属性和值
3、在Activity中,声明控件变量并根据id获得控件对象
4、创建线程对象
a)通过匿名内部类的方式
b)在编写完了5、6步之后再来继续编写这个线程对象里的操作
i.声明一个变量用来设置进度条的进度
ii.重写线程类的run方法(),里面编写要执行的操作
1.打印一个字符串
2.进度条的值增加
3.得到一个消息对象
4.设置消息对象arg1的值
5.让线程休眠一秒钟
6.将消息对象放入到消息队列中
7.判断,如果进度条的值等于100,则将线程对象从队列中移除。
5、创建Handler对象
a)与示例1不同的地方是,这里是通过匿名内部类的方式来声明的,而示例1是直接new出来的对象
b)重写Handler对象的handlerMessage(Message msg)方法
i.这个方法传入了一个Message对象,即消息对象,首先设置进度条的进度(这个值是Messag对象里面的一个成员变量arg1)。
ii.将要执行的线程对象放入到队列当中
6、编写Button需要的监听器,并绑定
a)设置进度条为显示状态
b)将要执行的线程对象放入到队列当中
下面是Activity的代码:
     7 楼    416849838    2011-11-25              回答三楼  不行,因为不能在子线程里更新UI