读书人

android Handler 引见

发布时间: 2012-07-20 10:38:30 作者: rapoo

android Handler 介绍

android Handler 介绍

?

转载自 : http://blog.csdn.net/a54cc/article/details/6215390

?

Handler是android提供的对于异步消息处理的方案。Handler的特点是与调用者处于同一线程,如果Handler里面做耗时的动作,调用者线程会阻塞。Android UI操作不是线程安全的,并且这些操作必须在UI线程中执行。Handler的post对线程的处理也不是真正start一个新的线程,而是直接调用了线程的run方法。

所以,Handler经常被用来在另外的线程中更新UI界面。因为UI操作必须在UI线程中完成,可以通过Handler在别的线程中向UI线程发送刷新消息,UI线程收到消息后执行相关操作。主要用到下面两个函数:

?

public final boolean sendMessage (Message msg)??????发送消息

public void handleMessage(Message msg)??????????????????处理消息

?

Handler对于Message的处理不是并发的。一个Looper?只有处理完一条Message才会读取下一条,所以消息的处理是阻塞形式的。

通过Handler类,还可以提交和处理一个Runnable对象。这个对象的run方法可以立刻执行,也可以在指定时间后执行(也可称为预约执行)。Handler类主要可以使用如下3个方法来设置执行Runnable对象的时间:

public final boolean post(Runnable r);

立即执行Runnable对象。

?

public final boolean postAtTime(Runnable r, long uptimeMillis);?

在指定的时间(uptimeMillis)执行Runnable对象

?

public final boolean postDelayed(Runnable r, long delayMillis);

在指定的时间间隔(delayMillis)执行Runnable对象

?

需要注意的是,不管使用哪个方法来执行Runnable对象,都只能运行一次。如果想循环执行,必须在执行完后再次调用post、postAtTime或postDelayed方法。

?

要停止执行Runnable对象,使用removeCallbacks方法:

public final void removeCallbacks (Runnable r);

读书人网 >Android

热点推荐