我可以使用Glide缓存图像而不显示它们吗

时间:2018-08-04 11:11:58

标签: android performance android-layout android-glide

我有一个供稿,向我发送了logos的列表

{
  "logos": {
    "GoogleLogo": "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcTEC8Plg0onmk5-0lHzN74023FJaH_N_4prUSlBBaUR9FqmjbfVhA"
  }
}

此供稿向我发送了大约30个徽标。

我要做的是在用户首次启动该应用程序时启动该服务,并使用Glide缓存所有图像。

因此在应用程序中,只要我使用以下方法,它都不会启动该服务,并立即向用户显示图像。

  GlideApp
    .with(myFragment)
    .load(url)
    .centerCrop()
    .placeholder(R.drawable.loading_spinner)
    .into(myImageView);

我将创建一个HashMap<String, String>作为密钥,logo name作为其值。

我的问题是,Glide中有没有可用的方法可用于缓存图像而不显示它们。

1 个答案:

答案 0 :(得分:1)

是的,使用 FutureTarget ,您可以在背景中加载图像。

启动Intent Service并以onHandleIntent方法加载图像。喜欢,

String data = intent.getStringExtra("data");
    try {
        JSONObject jsonObject = new JSONObject(data);
        JSONArray jsonArray = jsonObject.getJSONObject("data").getJSONArray("res");
        for (int i = 0; i < jsonArray.length(); i++) {
            if (common.getNetworkType().equalsIgnoreCase("-")) {
                stopSelf();
                break;
            } else {
                JSONObject jObj = jsonArray.getJSONObject(i);
                FutureTarget<File> future = Glide.with(this).load(common.completeURL(jObj.getString("AvatarImage"))).downloadOnly(400, 400);
                try {
                    future.get();
                    break;
                } catch (InterruptedException e) {
                    stopSelf();
                    break;
                } catch (ExecutionException e) {
                    stopSelf();
                    break;
                }
            }

        }
    } catch (Exception e) {
        stopSelf();
        logger.w(TAG, "onHandleIntent: ", e);
    }