Android 線程切換方案

定義一個包含主線程looper的線程池

public class MainExecutor extends AbstractExecutorService {

    private final Handler mHandler;

    public MainExecutor(Looper looper) {
        mHandler = new Handler(looper);
    }

    public Handler getHandler() {
        return mHandler;
    }

    @Override
    public void execute(Runnable runnable) {
        if (getHandler().getLooper() == Looper.myLooper()) {
            runnable.run();
        } else {
            getHandler().post(runnable);
        }
    }

    /**
     * Same as execute, but never runs the action inline.
     */
    public void post(Runnable runnable) {
        getHandler().post(runnable);
    }
    ...
    }

在工具類中將他定義為findl

public class Executors {
    /**
     * Returns the executor for running tasks on the main thread.
     */
    public static final MainExecutor MAIN_EXECUTOR =
            new MainExecutor(Looper.getMainLooper());
}

使用方法

MAIN_EXECUTOR.execute(new Runnable() {
    @Override
    public void run() {
        //執(zhí)行代碼
    }
});
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容