【问题标题】:Android gms ImageManager never loads imageAndroid gms ImageManager 从不加载图像
【发布时间】:2014-11-10 12:34:03
【问题描述】:

我正在尝试使用 Google Play 游戏服务 API 为成就绘制图标。
但是,它默默地失败了。

方法/问题:

  • 图片的URI检索成功,存在且有效。
  • 我使用ImageManager.loadImage 获取图像,使用OnImageLoadedListener 进行回调(com.google.android.gms.common.images.ImageManager)。
  • 但是,OnImageLoadedListener 的方法 onImageLoaded 永远不会被调用。
  • 没有错误,没有证据,完全忽略了,我什至等了 10 分钟以防万一。

代码:

// Get URI [is valid, exists, is of type png, I checked]
Uri uri = getAchievementIconUri(id);

// Use ImageManager to get the icon image
ImageManager.create(context).
    loadImage(new ImageManager.OnImageLoadedListener() {

        @Override
        public void onImageLoaded(Uri u, Drawable d, boolean r) {

            /* 
             * This code is never reached, no call to onImageLoaded is made!
             */

        }
}, uri);

【问题讨论】:

    标签: android io google-play-services google-play-games


    【解决方案1】:

    好吧,重要的是,我从来没有完全解决过这个问题。

    似乎它实际上偶尔会显示图标,只要感觉如此。

    我实现了一个解决方法,它加载图像的压缩、缓存版本,然后如果不放心,则将其替换为 ImageManager 提供的图像。

    如果有人找到正确答案,那么我将删除此解决方法,但在此之前,任何有相同问题的人都可以使用。

    加载本地图标的代码:

    public Bitmap loadDefaultAchievementIcon(final String id) {
        // Get drawable ID for achievement
        // iconIdMap is a map of achievement ID strings against their drawable res IDs
        int resID = iconIdMap.containsKey(id) ? iconIdMap.get(id) : 
                // Fallback/unknown icon
                R.drawable.ic_action_achievements;
    
        // Load and return bitmap
        InputStream is = getResources().openRawResource(resID);
        Bitmap bitmap = BitmapFactory.decodeStream(is);
        return bitmap;
    }
    

    【讨论】:

    • 这真的要了我的命。你有没有碰巧知道为什么监听器的工作如此出乎意料?
    【解决方案2】:

    这可能是一个很晚的答案,但它可能会帮助其他遇到同样情况的人。来自最新的谷歌文档,https://developers.google.com/android/reference/com/google/android/gms/common/images/ImageManager.html#public-methods

    请注意,您应该保留对提供的侦听器的引用,直到回调完成。因此,不鼓励使用匿名实现。

    这可能解释了您遇到的行为,就像在 sn-p 提供的第一个代码中一样,没有保留对 Listener 的引用。

    【讨论】:

      猜你喜欢
      • 2018-03-04
      • 2016-06-08
      • 2013-08-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-08-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多