2013-07-29 88 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

決不是晚期;)

相關問題