package com.win.project.util;
import android.content.Context;
import com.blankj.utilcode.util.FileUtils;
import com.blankj.utilcode.util.LogUtils;
import com.blankj.utilcode.util.PathUtils;
import com.bumptech.glide.Glide;
import com.bumptech.glide.GlideBuilder;
import com.bumptech.glide.Registry;
import com.bumptech.glide.annotation.GlideModule;
import com.bumptech.glide.integration.okhttp3.OkHttpUrlLoader;
import com.bumptech.glide.load.DecodeFormat;
import com.bumptech.glide.load.engine.bitmap_recycle.LruBitmapPool;
import com.bumptech.glide.load.engine.cache.DiskLruCacheFactory;
import com.bumptech.glide.load.engine.cache.InternalCacheDiskCacheFactory;
import com.bumptech.glide.load.engine.executor.GlideExecutor;
import com.bumptech.glide.load.model.GlideUrl;
import com.bumptech.glide.module.AppGlideModule;
import com.bumptech.glide.request.RequestOptions;
import java.io.InputStream;
import java.util.concurrent.TimeUnit;
import androidx.annotation.NonNull;
import okhttp3.OkHttpClient;
import rxhttp.RxHttpPlugins;
@GlideModule
public class GlideCache extends AppGlideModule {
@Override
public void applyOptions(Context context, GlideBuilder builder) {
super.applyOptions(context, builder);
int diskCacheSizeBytes = 1024 * 1024 * 1000;
String path = PathUtils.getExternalStoragePath() + "/123/";
Boolean isOk = FileUtils.createOrExistsDir(path);
LogUtils.e(path, isOk);
builder.setDiskCache(new DiskLruCacheFactory(
path, diskCacheSizeBytes));
builder.setBitmapPool(new LruBitmapPool(30));
builder.setDiskCache(new InternalCacheDiskCacheFactory(context));
builder.setSourceExecutor(GlideExecutor.newSourceExecutor());
builder.setDiskCacheExecutor(GlideExecutor.newDiskCacheExecutor());
builder.setDefaultRequestOptions(new RequestOptions().format(DecodeFormat.PREFER_RGB_565));
}
@Override
public boolean isManifestParsingEnabled() {
return false;
}
@Override
public void registerComponents(@NonNull Context context, Glide glide, @NonNull Registry registry) {
OkHttpClient client = RxHttpPlugins.newOkClientBuilder()
.readTimeout(120, TimeUnit.SECONDS)
.connectTimeout(120, TimeUnit.SECONDS)
.build();
OkHttpUrlLoader.Factory factory = new OkHttpUrlLoader.Factory(client);
glide.getRegistry().replace(GlideUrl.class, InputStream.class, factory);
}
}