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传下去,进行内部处理

posted @ 2020-06-01 17:40  make_wheels  阅读(271)  评论(0)    收藏  举报