如何直接写入Glide缓存?

时间:2017-11-01 11:08:30

标签: android android-glide image-caching

我们的应用程序支持在线和离线机制。这意味着应用程序应该工作并显示图像,无论是否有互联网连接。

我们正在使用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);

0 个答案:

没有答案