使用Glide缓存webview图像

时间:2017-07-15 23:33:01

标签: android caching webview kotlin android-glide

我想使用Glide来管理我的webview的图像资源,主要是为了以后我可以在其他视图中重复使用它们。

我通过截取图片资源加载并返回以下WebResourceResponse来设置重定向:

class ImageResponse(view: WebView, url: String) : WebResourceResponse("", "", null) {

    val futureBitmap = GlideApp.with(view).asBitmap().load(url).submit()

    override fun getData(): InputStream {
        val bos = ByteArrayOutputStream()
        futureBitmap.get().compress(CompressFormat.PNG, 0 /*ignored for PNG*/, bos)
        val bitmapdata = bos.toByteArray()
        return ByteArrayInputStream(bitmapdata)
    }
}

最终,我创建了一个未来的加载器,并使用它来缓存并将图像作为输入流返回。

然而,这种方法明显慢于webview的原生方法(~5s vs~8s)。

这可能部分是因为Glide必须在每个请求中使用ui线程确认,以确保视图在继续加载之前是有效的。

我有什么办法可以改善加载过程吗?

(我还想验证submit()是否立即开始加载资源,而不是等待在未来目标上调用get(),但我还没有找到添加监听器的方法,但在文档中没有看到它

0 个答案:

没有答案