android.os.Handler是Android SDK中处理定时操作的核心类。通过Handler类,可以提交和处理一个Runnable对象。这个对象的run方法可以立刻执行,也可以在指定时间之后执行(称为预约执行)。
一个Handler允许发送和处理与线程消息队列有关的消息和Runnable对象,并且会关联到主线程的MessageQueue中。每个Handler具有单独的线程,并且关联到消息队列的线程,就是说一个Handler有一个固有的消息队列。当实例化一个Handler时,它就承载在一个线程和消息队列的线程,这个Handler可以把Message或Runnable压入消息队列,并且从消息队列中取出Message或Runnable,进而操作它们。
Handler类有两种主要用途:
(1)按照时间计划,在未来某时刻处理一个消息或执行某个runnable实例;
(2)把一个对另外线程对象的操作请求放入消息队列,从而避免线程间冲突。
当一个进程启动时,主线程独立执行一个消息队列,该队列管理着应用顶层的对象(如Activities,Broadcast Receivers等)和所有创建的窗口。可以创建自己的线程,并通过Handler来与主线程进行通信,这可以通过在新的线程中调用主线程Handler的post和sendmessage操作来实现。
使用post方法实现多任务的主要步骤如下:
(1)创建一个Handler对象;
(2)将要执行的操作写在线程对象的run方法中;(www.xing528.com)
(3)使用post方法运行线程对象;
(4)如果需要循环执行,需要在线程对象的run方法中再次调用post方法。
下面是Handler对象的应用示例。实现一个模拟下载,Android应用项目名为“handler_Test”,其中Activity的代码如下:
程序的运行效果如图5-11所示。
图5-11 项目handler_Test的运行效果
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。