2013-07-29 84 views
0

我们正尝试通过类似content:// ...的通过android-class ImageManager下载Google Play游戏服务的头像,但由于未知原因,类停止加载相同的头像,只停止来响应OnImageLoadedListener。每张照片都是一个单独的经理实例。Android ImageManager Google游戏服务

所有头像都是有效的(对于测试,每次至少加载一次)没有异常捕获,创建管理器中的上下文是有效的,尝试了所有内容,从当前Activity到getApplicationContext()。

试图进行加载和异步同步。

值得注意的是:在最后一个加载器的动作始终与垃圾收集器对齐并且不会继续加载(应用程序继续工作)之后,尽管所有对象的引用都存储了。

往往不是完成加载最后一个化身。

有没有人遇到类似的问题?出现在版本2.3至4.2

代码在备用引导:

static ImageManager imageManager = null; 
static int id = 0; 
static Uri uri = null; 

... 

// ... 
// change id & uri 
// ... 

imageManager = ImageManager.create(context); 

Log.v("app", "LoadImageFromGoogle Manager created for Image #" + id); 

imageManager.loadImage(new OnImageLoadedListener() { 
    @Override 
    public void onImageLoaded(Uri arg0, Drawable arg1) { 
     try { 
      Log.v("app", "LoadImageFromGoogle Image loaded #" + id); 

      Bitmap bm = ((BitmapDrawable)arg1).getBitmap(); 
      ByteArrayOutputStream stream = new ByteArrayOutputStream(); 
      bm.compress(Bitmap.CompressFormat.PNG, 100, stream); 
      byte[] byteArray = stream.toByteArray(); 

      // ... some code 

      Log.v("app", "LoadImageFromGoogle Image added #" + id); 
     } catch (Exception e) { 
      Log.v("app", "LoadImageFromGoogle after loading Exception = " + e.toString()); 
     } 
    } 
}, uri, android.R.drawable.btn_star); 

日志中的最后一行总是这样的:

Log.v("app", "LoadImageFromGoogle Manager created for Image #" + id); 

和下面的消息GC。

回答

1

嗯....我从来没有见过这个问题。你确定你给它一个有效的URI吗?我的第一个猜测是,它可能是你的代码中的一个错误的地方,你上次调用imageManager.loadImage()时传递了一个无效的URI。我会尝试让上面的代码打印它正在加载的URI以及图像编号,看看是否有些奇怪的东西出现。

如果没有,您可以制作一个简单的repro案件并将其发布到我们的公共bug跟踪器中吗? http://code.google.com/p/play-games-platform

谢谢!

0

我有同样的问题。它看起来像垃圾收集器可以“清理”侦听器,然后它可以检索图像。解决问题的方法是直接在您的活动上实施ImageManager.OnImageLoadedListener,而不是立即创建新对象。

在这里,你可以找到关于谷歌代码相关的问题: https://code.google.com/p/play-games-platform/issues/detail?id=14&can=1&sort=-status&colspec=ID%20Type%20Status%20Priority%20Platform%20Summary%20Stars

决不是晚期;)

相关问题