android之HanderThread的callback
前言
因为有了HanderThread,所以我们可以不自己手动创建线程looper,来实现hander的线程化,那么仅仅功能止步于此么?
Hander的构造函数callback
在Hander的构造函数里面还有一个callback参数,仔细看下
mCallback = callback;
//
在public void dispatchMessage(Message msg)
函数先判断mCallback是否为空,不为空,就执行这个callback
public interface Callback {
/**
* @param msg A {@link android.os.Message Message} object
* @return True if no further handling is desired
*/
public boolean handleMessage(Message msg);
}
callback就是一个接口,继承就可以实现
说了一大堆,这个callback啥用
嗯。。。
我觉得看需求吧
比如把Hander内置化
我们通常使用HanderThread和Hander来组合使用达到线程执行Hander的handermessage的目的
但是这样的其实是不集中的,我们可以把这两个功能合并,在HanderThread处理send和handermessage
代码
import android.annotation.NonNull;
import android.os.Handler;
import android.os.HandlerThread;
import android.os.Message;
public class TestHanderThread extends HandlerThread implements Handler.Callback{
private Handler handler = null;
TestHanderThread(String name) {
super(name);
}
@Override
protected void onLooperPrepared() {
handler = new Handler(getLooper(), this);
}
@Override
public boolean handleMessage( Message msg) {
if (msg == null) {
return false;
}
else {
switch (msg.what) {
default:
break;
}
}
return true;
}
}
提供了一种思路吧,把Hander继承到HandlerThread,让功能更集中,这样以后有TestHanderThread 需要实现单一的功能可以直接内部包含,然后内部把这个Hander传下去,进行内部处理
一个圆,圆内是你会的,圆外是你不知道的。而当圆越大,你知道的越多,不知道的也越多了

浙公网安备 33010602011771号