DefaultResourceRunnerFactory.java revision ac28599e2b40e0dd6b97f6a91849585531264622
1package com.bumptech.glide.load.engine;
2
3import android.os.Handler;
4import com.bumptech.glide.Priority;
5import com.bumptech.glide.load.Key;
6import com.bumptech.glide.load.ResourceDecoder;
7import com.bumptech.glide.load.ResourceEncoder;
8import com.bumptech.glide.load.Transformation;
9import com.bumptech.glide.load.resource.transcode.ResourceTranscoder;
10import com.bumptech.glide.load.engine.cache.DiskCache;
11import com.bumptech.glide.load.engine.cache.MemoryCache;
12import com.bumptech.glide.load.data.DataFetcher;
13
14import java.io.InputStream;
15import java.util.concurrent.ExecutorService;
16
17class DefaultResourceRunnerFactory implements ResourceRunnerFactory {
18    private final Handler bgHandler;
19    private MemoryCache memoryCache;
20    private DiskCache diskCache;
21    private Handler mainHandler;
22    private ExecutorService service;
23
24    public DefaultResourceRunnerFactory(MemoryCache memoryCache, DiskCache diskCache, Handler mainHandler,
25            ExecutorService service, Handler bgHandler ) {
26        this.memoryCache = memoryCache;
27        this.diskCache = diskCache;
28        this.mainHandler = mainHandler;
29        this.service = service;
30        this.bgHandler = bgHandler;
31    }
32
33    @Override
34    public <T, Z, R> ResourceRunner<Z, R> build(Key key, int width, int height,
35            ResourceDecoder<InputStream, Z> cacheDecoder, DataFetcher<T> fetcher, ResourceDecoder<T, Z> decoder,
36            Transformation<Z> transformation, ResourceEncoder<Z> encoder, ResourceTranscoder<Z, R> transcoder,
37            Priority priority, EngineJobListener listener) {
38
39        EngineJob engineJob = new EngineJob(key, memoryCache, mainHandler, listener);
40
41        SourceResourceRunner<T, Z, R> sourceRunner = new SourceResourceRunner<T, Z, R>(key, width, height, fetcher,
42                decoder, transformation, encoder, transcoder, diskCache, priority, engineJob);
43
44        return new ResourceRunner<Z, R>(key, width, height, diskCache, cacheDecoder, transcoder, sourceRunner, service,
45                bgHandler, engineJob);
46    }
47}
48