0

重複の可能性:
Android:画像をビットマップオブジェクトにロードする際のメモリ不足の問題
OutOfMemoryError:ビットマップサイズがVMバジェットを超えています:-Android

これについてはすでに多くのトピックがあることを私は知っていますが、私が試したものは何でもうまくいかないようです。

ビットマップのリサイクル、nullにするなど、いくつかのonDestroyトリックを試しました。コードが他の状況と異なるかどうかわかりませんか?そのように思えます...私はTouchImageView拡張機能を使用しているので、ピンチズームを使用できるので、もっと複雑になるのではないでしょうか。

とにかくここに私のコードがあります。誰かがこれを修正する方法を指摘してもらえますか(ビットマップをダウンスケーリングせずに)。

    public class PageActivity extends Activity {

        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.page);

            Intent parent = getIntent();
            int pagenumber = parent.getIntExtra("pagenumber", 1);
            int resID = getResources().getIdentifier("page"+pagenumber , "drawable", getPackageName());

            TouchImageView img = new TouchImageView(this);
            Bitmap bitmap = BitmapFactory.decodeResource(getResources(), resID);
            img.setImageBitmap(bitmap);
            img.setMaxZoom(4f);

            LinearLayout rootview = (LinearLayout) findViewById(R.id.RootView);
            rootview.addView(img);
        }
    }
4

1 に答える 1

0

あなたが言っているように、クロッピングからリサイクルまですべてを使用しましたが、今度は WeakReferences も試してください。

これでも解決しない場合は、コードでメモリ リークが発生している可能性があります。

同じ問題に関する私の回答を参照してください:ビットマップ サイズが Vm 予算エラー android を超えています

これは一般的な答えです。私が言及したすべての方法を試してください。それらの1つはあなたのために働くはずです:)

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

于 2012-10-03T07:47:22.613 に答える