内部缓存工厂将磁盘缓存放在应用程序的内部缓存目录中,并将最大大小设置为250MB。
当我尝试在我的应用中实现某些离线功能时,可能需要大于250MB的缓存大小。那么Glide允许修改缓存大小,或者我需要找到另一种方法吗?如果是这样,我应该遵循什么机制?
我在documentation中看到了一种增加它的方法。
builder.setDiskCache(
new InternalCacheDiskCacheFactory(context, yourSizeInBytes));
如何在我的代码中实现它?
答案 0 :(得分:3)
见here。
您可以使用InternalCacheDiskCacheFactory设置磁盘缓存的大小。
builder.setDiskCache(new InternalCacheDiskCacheFactory(context, yourSizeInBytes));
您可以在此项目中申请如下:
import android.annotation.TargetApi;
import android.content.Context;
import android.os.Build;
import android.os.Environment;
import android.os.StatFs;
import android.util.Log;
import com.bumptech.glide.Glide;
import com.bumptech.glide.GlideBuilder;
import com.bumptech.glide.load.engine.cache.InternalCacheDiskCacheFactory;
import com.bumptech.glide.module.GlideModule;
import com.example.MyApplication;
import java.util.Locale;
public class LimitCacheSizeGlideModule implements GlideModule {
@Override
public void applyOptions(Context context, GlideBuilder builder) {
if (MyApplication.from(context).isTest())
return; // NOTE: StatFs will crash on robolectric.
builder.setDiskCache(new InternalCacheDiskCacheFactory(context, yourSizeInBytes));
}
@Override
public void registerComponents(Context context, Glide glide) {
}
}
然后在你的清单中添加它就像这样
<manifest
...
<application>
<meta-data
android:name="YourPackageNameHere.LimitCacheSizeGlideModule"
android:value="GlideModule" />
...
</application>
</manifest>