当我使用滑行时,某些图像无法加载。我如何将其存储在缓存中或任何地方,以便在我将所有图像加载到应用程序时使用该应用程序。 我的问题的示例图片: 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; 并且我不知道应该如何缓存它。
答案 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)