0

content :/ / ... などの URI で Google Play ゲーム サービスからアバターをダウンロードしようとしていますが、理由は不明ですが、クラスは同じアバターの読み込みを停止し、OnImageLoadedListener への応答を停止します。各画像は、マネージャーの個別のインスタンスです。

すべてのアバターは有効です (テストでは、それぞれが少なくとも 1 回ロードされます) 例外はキャッチされず、作成マネージャーのコンテキストは有効であり、現在のアクティビティから 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。

4

2 に答える 2

1

うーん....私はこの問題を見たことがありません。有効な URI を供給していますか? 私の最初の推測では、最後に imageManager.loadImage() を呼び出したときに無効な URI を渡しているコードのどこかで、オフバイワン エラーが発生している可能性があります。上記のコードで、ロードしようとしている URI と画像番号を出力して、何か変なものが表示されるかどうかを確認してみます。

そうでない場合は、簡単な再現ケースを作成して、パブリック バグ トラッカーに投稿していただけますか? http://code.google.com/p/play-games-platform

ありがとう!

于 2013-08-21T21:50:30.333 に答える
0

私も同じ問題を抱えていました。ガベージ コレクターは、イメージを取得する前にリスナーを「クリーン」にできるようです。この問題を解決する方法はImageManager.OnImageLoadedListener、アクティビティに直接実装し、その時点で新しいオブジェクトを作成しないことです。

ここで、Google コードに関する関連する問題を見つけることができます: https://code.google.com/p/play-games-platform/issues/detail?id=14&can=1&sort=-status&colspec=ID%20Type%20Status%20Priority% 20プラットフォーム%20サマリー%20スター

遅すぎることはありません;)

于 2014-09-19T09:46:09.503 に答える