Developer-Handler

本文详细介绍了 Android 中 Handler 的工作原理及其应用场景。包括 Handler 如何与线程和消息队列关联,常见方法如 post 和 sendEmptyMessage 的用法,以及 Looper 在线程中的作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、综述

java.lang.Object
↳ android.os.Handler

每个Handler实例,和一个单独的thread、这个thread的 message queue相关联。Handler的两大用处:

1、执行在未来某点运行的message和runnable

2、另开一个线程执行动作

常见的具体实现方法:

post(Runnable), postAtTime(Runnable, long), postDelayed(Runnable, long), 

sendEmptyMessage(int), sendMessage(Message), sendMessageAtTime(Message, long), and sendMessageDelayed(Message, long) 


二、构造函数

1、Handler()

默认方法,将handler和当前的thread的Looper关联
2、Handler(Handler.Callback callback)
将handler和当前的thread的Looper关联,并且取得 回调接口,处理message
3、Handler(Looper looper)
使用指定的looper
4、Handler(Looper looper, Handler.Callback callback)
指定的looper,需要回调

三、常用方法

1、public void dispatchMessage (Message msg) 处理系统message

2、public String getMessageName (Message message) 返回特定的message的名字

3、public void handleMessage (Message msg)

必须实现这个子类来接收message

4、public final boolean post (Runnable r) 

将runnable加入到message queue里面,该runnable会在handler依赖的线程里run

返回:如果返回true,则表明是添加成功。

public final boolean postAtTime (Runnable r, Object token, long uptimeMillis) 类似于上条,但是在特定的时间

public final boolean postDelayed (Runnable r, long delayMillis) 为runnable的延迟增加一个时延

5、public final void removeCallbacks (Runnable r)  移除runnable



Looper:

用于为一个thread跑一个 message loop,线程(Thread)默认是没有message Loop的,通过prepare()创建一个,loop()使其运行。标准化程序:

class LooperThread extends Thread {
public Handler mHandler;

public void run() {
Looper.prepare();//Initialize the current thread as a looper.

mHandler = new Handler() {
public void handleMessage(Message msg) {
// process incoming messages here
}
};

Looper.loop();
}
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值