0

Androidで画像ギャラリーを実装しようとしています。コードはhttp://www.mobisoftinfotech.com/blog/android/android-gallery-widget-example-and-tutorial/に基づいており、詳細をいくつか変更しました。

私は WeakReference を使用していますが、ビットマップが多すぎると、ガベージ コレクターが弱参照を破棄するようです。どうすればこれを処理できますか?

この関数を介してビットマップを取得します。

    public static WeakReference<Bitmap> getBitmap(String imageName, int width,
        int height) {
    String pathToImage = getPathToImage(imageName);
    Options options = new BitmapFactory.Options();
    options.inJustDecodeBounds = true;
    BitmapFactory.decodeFile(pathToImage, options);

    /*
     * Calculate inSampleSize
     */
    options.inSampleSize = calculateInSampleSize(options, width, height);

    // Decode bitmap with inSampleSize set
    options.inJustDecodeBounds = false;

    WeakReference<Bitmap> scaledBitmap = new WeakReference<Bitmap>(
            BitmapFactory.decodeFile(pathToImage, options));
    return scaledBitmap;
}

そして、私は320x480のソリューションを取ったので、それほど大きくないと思います...

ギャラリーに 3 つ以上の写真がある場合、一部の写真が表示されません。

ギャラリーチュートリアルはあまり良くないですか?これを実装する他の方法はありますか?

ありがとうございました!

4

1 に答える 1

1

ソフト参照を使用する代わりに、lrucacheクラスを確認する必要があります(これはハニカムで利用可能になりましたが、android-supportライブラリの一部です。

詳細については、こちらをご覧ください:http://developer.android.com/training/displaying-bitmaps/cache-bitmap.html 非常に便利です:これを使用すると、弱参照でメモリを自分で処理する必要がなくなります: -)

于 2013-02-07T14:06:14.547 に答える