android - 如何增加 Glide android 中的缓存大小?

标签 android caching android-glide image-caching

根据documentation ,

The internal cache factory places the disk cache in your application's internal cache directory and sets a maximum size of 250MB.

当我尝试在我的应用程序中实现一些离线功能时,它可能需要大于 250MB 的缓存大小。那么 Glide 是否允许修改缓存大小,或者我需要找到一种替代方法来做这件事?如果是这样,我应该遵循什么机制?

我在documentation看到过一种增加它的方法。

builder.setDiskCache(
new InternalCacheDiskCacheFactory(context, yourSizeInBytes));

如何在我的代码中实现它?

最佳答案

参见 here .

You can set the size of the disk cache using the 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) {
    }


}

然后在你的 list 中这样添加

<manifest

    ...

    <application>

        <meta-data
            android:name="YourPackageNameHere.LimitCacheSizeGlideModule"
            android:value="GlideModule" />

        ...

    </application>
</manifest>    

关于android - 如何增加 Glide android 中的缓存大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46108915/

相关文章:

android - 如何使用 glide 在 Google map 的 infoWindow 中获取图像 - Android

android - Glide centerCrop() 不适用于 CustomTarget

安卓 + Node : Client-Server communication

jquery - jquery 在 IE7 中的 GET 调用上是否需要时间戳?

c++ - 缓存重复输入数据的表达式评估

在本地缓存对象以供重用 (Parse.com/Backbone)

android - 如何使用 Glide 加载 gif 图片 url?

android - 谷歌地图 API key 在侧面加载时适用于发布版本,在发布时不起作用

android fragment -当另一个 fragment 被推到它上面时如何保存 fragment 中的 View 状态

android - 如何在 authorize.net sdk for android 中传递 api 登录 key 和交易 ID?