我们的应用程序支持在线和离线机制。这意味着应用程序应该工作并显示图像,无论是否有互联网连接。
我们正在使用Glide(4.2.0)库来处理图像,如果有互联网连接,一切正常。我们正在使用本地数据库&用于在客户端和服务器之间同步数据的套接字。图像通过套接字编码的base64发送,而不是HTTP服务。
如果没有互联网连接并且Glide的缓存为空,则会出现问题。我想要实现的是将Bitmap
直接写入Glide的缓存(后台线程):
ByteArrayOutputStream stream = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.JPEG, 100, stream);
byte[] byteArray = stream.toByteArray();
try {
GlideApp.with(App.getInstance())
.load(byteArray)
.signature(new ObjectKey(objectId))
.diskCacheStrategy(DiskCacheStrategy.RESOURCE)
.submit(Target.SIZE_ORIGINAL, Target.SIZE_ORIGINAL)
.get();
} catch (InterruptedException e) {
e.printStackTrace();
} catch (ExecutionException e) {
e.printStackTrace();
}
这就是图像的加载方式(UI线程):
GlideApp.with(this)
.load(URL + "/" + objectId + "/image")
.signature(new ObjectKey(user.getObjectId()))
.diskCacheStrategy(DiskCacheStrategy.RESOURCE)
.into(imageView);