Android 如何在Glide中缓存图像

Android 如何在Glide中缓存图像,android,image,caching,Android,Image,Caching,当我使用glide时,有些图像无法加载。我如何将其存储在缓存中或任何地方,直到我将使用应用程序加载所有图像。 我的问题的示例图片: 我的代码: .爪哇 .xml 我使用glide是因为我看到它很容易使用,而且我可以从绘图设备加载图像。 主要的问题是,它是随机进行的,所以我的意思是,一旦我所有的图像看起来都不一样,另一次所有的图像都可以看到,我不知道为什么。 我使用980x1550大小的图像,因为我不希望我的图像充满像素,当我在.xml中使用另一种方法(如src)时,我得到了内存错误。 如果

当我使用glide时,有些图像无法加载。我如何将其存储在缓存中或任何地方,直到我将使用应用程序加载所有图像。 我的问题的示例图片:

我的代码:

.爪哇

.xml


我使用glide是因为我看到它很容易使用,而且我可以从绘图设备加载图像。 主要的问题是,它是随机进行的,所以我的意思是,一旦我所有的图像看起来都不一样,另一次所有的图像都可以看到,我不知道为什么。 我使用980x1550大小的图像,因为我不希望我的图像充满像素,当我在.xml中使用另一种方法(如src)时,我得到了内存错误。 如果有人知道任何解决方案,我如何缓存图像

编辑: 对于这些(.diskCacheStrategy)(diskCacheStrategy.RESULT;diskCacheStrategy(diskCacheStrategy.Source))我也有同样的问题。 我从LogCat得到这个消息:抛出OutOfMemoryError“无法分配1519012字节的分配,其中230112个空闲字节和224KB直到OOM”
我不知道该如何缓存。默认情况下,Glide会将所有图像资源放入内存缓存。因此,不需要特定调用
。skipMemoryCache(false)

提示:请注意这样一个事实,即如果您在没有
.skipMemoryCache(true)
的情况下对同一URL发出初始请求,然后使用该方法,资源将被缓存在内存中。当您要调整缓存行为时,请确保对同一资源的所有调用都是一致的


参考资料:

请根据官方文件阅读以下说明:


这里是一个常见的场景,您希望从缓存加载图像并仅下载新数据如果存在新图像,您必须有一种方法知道图像是否已更新,例如一个名为imageTimeStamp的变量,其中包含图像上次更新的时间

            Glide.with(context).load(url).apply(new RequestOptions()
                .placeholder(R.drawable.defultIcon)
                .signature(new ObjectKey(image.getPPTimeStamp()))) // here you add some value , if the next time you add the same value then it will load from cache otherwise if you put new value you will download , then save in cache
                .into(icon);

发布Glide日志,这样我们就可以知道为什么图像加载失败Glide之后的4.x是什么意思?4.x版本是类似于4.5.0的库的版本,有这些(.diskCacheStrategy)(diskCacheStrategy.RESULT;diskCacheStrategy(diskCacheStrategy.Source))我也有同样的问题。我从LogCat得到这个问题:抛出OfMemoryError“分配1519012字节分配失败,其中230112个空闲字节和224KB直到OOM”,我不知道如何,何时应该缓存它。
<ImageButton
            android:id="@+id/home_ib7_monster_truck"
            android:layout_width="98dp"
            android:layout_height="155dp"
            android:layout_alignStart="@+id/home_ib4_keplers_dream"
            android:layout_below="@+id/home_ib4_keplers_dream"
            android:layout_marginTop="14dp"
            android:background="@android:color/transparent"
            android:scaleType="fitCenter" />
            Glide.with(context).load(url).apply(new RequestOptions()
                .placeholder(R.drawable.defultIcon)
                .signature(new ObjectKey(image.getPPTimeStamp()))) // here you add some value , if the next time you add the same value then it will load from cache otherwise if you put new value you will download , then save in cache
                .into(icon);