package com.bumptech.glide.load.engine; import android.os.Handler; import com.bumptech.glide.Priority; import com.bumptech.glide.load.Key; import com.bumptech.glide.load.ResourceDecoder; import com.bumptech.glide.load.ResourceEncoder; import com.bumptech.glide.load.Transformation; import com.bumptech.glide.load.resource.transcode.ResourceTranscoder; import com.bumptech.glide.load.engine.cache.DiskCache; import com.bumptech.glide.load.engine.cache.MemoryCache; import com.bumptech.glide.load.data.DataFetcher; import java.io.InputStream; import java.util.concurrent.ExecutorService; class DefaultResourceRunnerFactory implements ResourceRunnerFactory { private final Handler bgHandler; private MemoryCache memoryCache; private DiskCache diskCache; private Handler mainHandler; private ExecutorService service; public DefaultResourceRunnerFactory(MemoryCache memoryCache, DiskCache diskCache, Handler mainHandler, ExecutorService service, Handler bgHandler ) { this.memoryCache = memoryCache; this.diskCache = diskCache; this.mainHandler = mainHandler; this.service = service; this.bgHandler = bgHandler; } @Override public <T, Z, R> ResourceRunner<Z, R> build(Key key, int width, int height, ResourceDecoder<InputStream, Z> cacheDecoder, DataFetcher<T> fetcher, ResourceDecoder<T, Z> decoder, Transformation<Z> transformation, ResourceEncoder<Z> encoder, ResourceTranscoder<Z, R> transcoder, Priority priority, boolean isMemoryCacheable, EngineJobListener listener) { EngineJob engineJob = new EngineJob(key, memoryCache, mainHandler, isMemoryCacheable, listener); SourceResourceRunner<T, Z, R> sourceRunner = new SourceResourceRunner<T, Z, R>(key, width, height, fetcher, decoder, transformation, encoder, transcoder, diskCache, priority, engineJob); return new ResourceRunner<Z, R>(key, width, height, diskCache, cacheDecoder, transcoder, sourceRunner, service, bgHandler, engineJob); } }