Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 在Glide v4不工作的情况下预加载图像_Android_Android Glide_Preloading_Image Preloader - Fatal编程技术网

Android 在Glide v4不工作的情况下预加载图像

Android 在Glide v4不工作的情况下预加载图像,android,android-glide,preloading,image-preloader,Android,Android Glide,Preloading,Image Preloader,我正在尝试使用Glide on app start将这些图像预加载并缓存到磁盘。我的预加载代码如下所示: getAllImageUrls().forEach { url -> GlideApp.with(context) .load(url) .apply(RequestOptions().diskCacheStrategy(DiskCacheStrategy.ALL)) // request listener added for debug

我正在尝试使用Glide on app start将这些图像预加载并缓存到磁盘。我的预加载代码如下所示:

getAllImageUrls().forEach { url -> GlideApp.with(context)
        .load(url)
        .apply(RequestOptions().diskCacheStrategy(DiskCacheStrategy.ALL))
        // request listener added for debug process
        .listener(object: RequestListener<Drawable> {

            override fun onLoadFailed(e: GlideException?, model: Any?, target: Target<Drawable>?, isFirstResource: Boolean): Boolean {

                ...

                return true
            }

            override fun onResourceReady(resource: Drawable?, model: Any?, target: Target<Drawable>?, dataSource: DataSource?, isFirstResource: Boolean): Boolean {

                // logging onResourceReady and data source here

                return true
            }
        })
        .signature(IntegerVersionSignature(version))
        // preloads image into cache using original dimensions
        .preload()}
fun ImageView.loadImageFromUrl(imageUrl: String, activity: Activity, useCrossFade: Boolean = DEFAULT_CROSS_FADE_SETTING) {
GlideApp.with(activity).loadWithDefaultConfigInto(imageUrl, this, useCrossFade)}

private fun RequestManager.loadWithDefaultConfigInto(imageUrl: String, imageView: ImageView, useCrossFade: Boolean) {

    val transitionOptions: DrawableTransitionOptions = if (useCrossFade) DrawableTransitionOptions.withCrossFade() else DrawableTransitionOptions().dontTransition()

    this.load(imageUrl)
            .apply(RequestOptions().diskCacheStrategy(DEFAULT_DISK_CACHE_STRATEGY_GLIDE))
            .transition(transitionOptions)
            .into(imageView)
}
但显然,图像的磁盘缓存不起作用。因为当我通过Charles检查网络请求时,我看到所有图像url都加载到app start上,但当需要这些预加载的图像时,应用程序会再次访问网络并再次加载相同的图像url


要使预加载和磁盘缓存正常工作,我需要做些什么?

这是一个非常老的问题,但问题还是来了:


您似乎在预加载时使用了签名,而不是在之后加载图像时,这样图像就不会进入缓存。

您的设备是否内存不足??您的设备内部存储还剩下多少GB可用空间!