一、综述
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();
}
}