android Handler 介绍

android Handler 介绍

 

转载自 : http://blog.youkuaiyun.com/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) ;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值