使用Glide库下载后,为什么会有一些空白图像?

时间:2019-01-31 10:24:57

标签: android android-glide

这是我的应用的屏幕录像:https://drive.google.com/file/d/1fBxcp5oU6AeAFW6M68ARA6toYv3sh7MQ/view?usp=sharing

从服务器下载图像路径后,我想使用View Pager创建一些图像幻灯片来显示图像

从视频中可以看到,可以正确显示前两张图像,但是第三张和第四张图像将显示一段时间(空白,只有白色,没有图像),然后最终显示正确的图像< / p>

这不是该应用程序的首次启动,在我重新打开该应用程序之后,这种情况将再次发生。没有缓存?

为什么会这样?据我所知,Glide库默认会缓存图像。所以我希望我不会重新下载图片

这是我的寻呼机适配器类:

class ImageSlideShowAdapter(val context: Context, val banners: List<Banner>) : PagerAdapter() {


    override fun isViewFromObject(view: View, o: Any): Boolean {
        return view === o
    }

    override fun getCount(): Int {
        return banners.size
    }

    override fun instantiateItem(container: ViewGroup, position: Int): Any {

        val imageView = ImageView(context)
        imageView.setScaleType(ImageView.ScaleType.CENTER_CROP)

        Glide
            .with(context)
            .load(banners.get(position).getFormattedImageURL())
            .into(imageView)

        container.addView(imageView)

        return imageView


    }

    override fun destroyItem(container: ViewGroup, position: Int, `object`: Any) {
        container.removeView(`object` as View)
    }
}

1 个答案:

答案 0 :(得分:0)

您没有缓存图像

在应用级别build.gradle的顶部添加apply plugin: 'kotlin-kapt'

依存关系

implementation 'com.github.bumptech.glide:glide:4.8.0'
kapt 'com.github.bumptech.glide:compiler:4.8.0'   // for Kotlin

添加此类

import com.bumptech.glide.annotation.GlideModule
import com.bumptech.glide.module.AppGlideModule

@GlideModule
class MyAppGlideModule : AppGlideModule()

重建将生成GlideApp的项目

使用diskCacheStrategy缓存图像

  GlideApp.with(context)
    .load(banners.get(position).getFormattedImageURL())
    .diskCacheStrategy(DiskCacheStrategy.DATA)
    .into(imageView)