从源码中还发现有 mDelegate
和 mDefaultTaskExecutor
,其中 mDelegate
是 ArchTaskExecutor
实现的代理类,承担功能的具体实现。mDefaultTaskExecutor
是已实现的默认线程池代理类,mDelegate
默认被赋予 mDefaultTaskExecutor
的实例,同时支持外部自定义实现线程池。
public class ArchTaskExecutor extends TaskExecutor {
…
//设置自定义的线程池
public void setDelegate(@Nullable TaskExecutor taskExecutor) {
mDelegate = taskExecutor == null ? mDefaultTaskExecutor : taskExecutor;
}
}
再看下一开始讲到的 ArchTaskExecutor
中暴露的方法实现:
public class ArchTaskExecutor extends TaskExecutor {
…
//提供主线程的对象获取
@NonNull
private static final Executor sMainThreadExecutor = new Executor() {
@Override
public void execute(Runnable command) {
getInstance().postToMainThread(command);
}
};