代码之家  ›  专栏  ›  技术社区  ›  dev90

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

  •  1
  • dev90  · 技术社区  · 7 年前

    我有一个给我的信息 logos

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

    这个feed给我发了大约30个logo。

    我想做的是在用户第一次启动应用程序时点击此服务,并使用 Glide .

    所以在应用程序中,每当我使用以下方法时,它都不会点击服务,并立即向用户显示图像。

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

    我会创造一个 HashMap<String, String> 会有的 logo name 作为关键 URL 作为价值。

    我的问题是Glide中是否有任何方法可以用来缓存图像而不显示它们。

    1 回复  |  直到 6 年前
        1
  •  1
  •   Abhay Koradiya    7 年前

    是使用 未来目标 您可以在后台加载图像。

    启动意图服务并在中加载图像 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);
        }