14,handler的简单示例+代码

来源:互联网 发布:广告音频制作软件 编辑:程序博客网 时间:2024/06/07 03:37

1,序

公司招聘的应届大学生,有一些有点不大明白的东西,好像对handler都是一知半解,所以我直接做了这个demo,给各位同事以及自己做个备份,希望能给大家带来帮助。

2,概念

首先咱们必须要明白,安卓是一个不允许线程阻塞,而且ui的界面更新只能在主线程里面进行更新,但是如果有十分耗时或者十分复杂以及十分麻烦甚至你觉得十分蛋疼的工作(好吧,我承认,我忘记activity阻塞多少秒就会报错了,5秒?10秒?这个重要么?就算是4秒的操作,你敢放到主线程里面吗?肯定不可能吧,如果放进去你肯定会经常遇到机器假死报错的。),你是不能放在主线程之中的,你必须要新开一条线程进行。但是这条新开的线程,怎么通知主线程已经完成、怎么把处理完成数据返回给主线程以便让主线程更新UI呢?

这个时候,handler就出现了~~~~

3,介绍

handler其中里面有handMessage(Message msg)和sendMessage(Message msg),你完全可以理解成子线程完成了耗时操作,通过sendMessage()报告给主线程,主线程则通过handMessage()接受子线程报告,从而进行了更新UI这个操作。

而sendMessage(Message msg)和handMessage(Message msg),之中Message msg对象是有两种构造方法的

方法1:

Message message = new Message();
方法2:

<span style="white-space:pre"></span>     h.sendMessage(h.obtainMessage(1, "abc"));
4,本例子的一些特别要介绍的地方

在例子的22行,对handler进行了final的定义,这个原因是因为35行中,在内部类引用了该对象,所以要进行finald的定义

5,下载地址

http://download.csdn.net/detail/zzjjqqzzhhqq/7770211 不要积分的哦 哈哈哈哈

如果有任何疑问和问题,欢迎各位拍砖,喷神您就放过小弟吧

0 0
原创粉丝点击