如何在Glide中缓存图像

时间:2018-01-08 14:02:46

标签: android image caching

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

我的代码:

的.java

             home_ib7_monster_truck = 
            (ImageButton)findViewById(R.id.home_ib7_monster_truck);
             Glide.with(Home.this)
            .load(R.drawable.moviep_monster_truck)
            .centerCrop()
            .fitCenter()
            .diskCacheStrategy(DiskCacheStrategy.ALL)
            .into(home_ib7_monster_truck);

.XML

<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" />

我使用滑行&因为我看到它易于使用,我可以从drawables加载图像。 而主要的问题是,它是随机做的,所以我的意思是,一旦我的所有图像看起来都没有,所有图像都可以看到另一次,我不知道为什么。 我使用的是980x1550尺寸的图像,而且我不希望我的图像充满像素,当我在.xml中使用src之类的其他方法时,我遇到了内存错误。 所以任何人都知道任何解决方案,我如何缓存图像?

编辑: 有了这些(.diskCacheStrategy(DiskCacheStrategy.RESULT; diskCacheStrategy(DiskCacheStrategy.Source))我遇到了同样的问题。 我从LogCat得到这个:抛出OutOfMemoryError&#34;无法分配1519012字节分配230112个空闲字节和224KB直到OOM&#34; 并且我不知道应该如何缓存它。

3 个答案:

答案 0 :(得分:3)

这是常见的情况,您想从缓存中加载图像并仅下载新数据。如果存在新图像,则必须有一种方法来知道该图像是否已更新,例如例如一个名为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);

答案 1 :(得分:0)

默认情况下,Glide会将所有图像资源放入内存缓存中。因此,不需要特定的电话.skipMemoryCache( false )

提示:请注意,如果您在没有.skipMemoryCache( true )的情况下向同一网址发出初始请求,然后使用该方法,则资源将缓存在内存中。当您想要调整缓存行为时,请确保您对同一资源的所有调用保持一致!

Referance:https://futurestud.io/tutorials/glide-caching-basics

答案 2 :(得分:0)

请根据官方文档阅读以下说明:https://futurestud.io/tutorials/glide-caching-basics

enter image description here

enter image description here