我想使用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()
,但我还没有找到添加监听器的方法,但在文档中没有看到它