知识点
接受子线程发送的消息数据,并用此消息数据配合主线程更新UI。
根据消息数据中的标识msg.what,分类处理相应的操作。
范例程序
为了让线程对象Runnable运行过程中,可以不断地将信息往Activity传递,所以用了Android.os.Handler对象及Android.os.Message对象,且在类成员变量中声明了两个整数:STOP_NOTIFIER与RUNNING_NOTIFIER,这两个整数将作为信息传递出来时的信号标识,前者为线程对象Runnable需要喊停的标识,后者为线程对象Runnable正在运行的标识。
本范例中,摆放一个按钮和一个进度条控件。按钮用于复位参数和启动线程对象Runnable。
具体代码如下:
运行结果如下:
DEBUG/lyg(370): onClick-->id=1 name=main
DEBUG/lyg(370): run-->id=1 name=main
DEBUG/lyg(370): run-->id=1 name=main
DEBUG/lyg(370): run-->id=1 name=main
DEBUG/lyg(370): run-->id=1 name=main
DEBUG/lyg(370): run-->id=1 name=main
DEBUG/lyg(370): run-->id=1 name=main
DEBUG/lyg(370): run-->id=1 name=main
DEBUG/lyg(370): run-->id=1 name=main
DEBUG/lyg(370): run-->id=1 name=main
DEBUG/lyg(370): run-->id=1 name=main
DEBUG/lyg(370): run-->id=1 name=main
DEBUG/lyg(370): run-->id=1 name=main
注:从上述的输出结果可以看出,线程对象runable并没真正运行起来,而是由handler所属线程main调用了runable的run()方法。
扩充学习
ProgressBar控件的布局如下: