ビットマップから画像を拡大縮小すると、アプリケーションがシャットダウンします。
だから私はタブを見たLogCat
。
私は、その理由がメモリオーバーフローであることがわかりました。
私は新しい方法で作成されたメモリを解放する方法を知らなかった。
ガベージコレクションが機能しません。ここで画像のスケールが原因でメモリーオーバーフローエラー
Runtime.getRuntime().freeMemory();
matrix.reset();
curScale += 0.02f;
h = orgImage.getHeight();
w = orgImage.getWidth();
matrix.postScale(curScale, curScale);
rtnBitmap = Bitmap.createBitmap(orgImage, 0, 0, w, h, matrix, true);
curImageView.setImageBitmap(rtnBitmap);
calculate(-0.02f);
問題がrtnBitmap
次のとおりです。次のように
コードがあります。これを追加するだけでなく、私も関数recycle()
を使用しました。しかし、それは動作しませんでした。
私はあなたのお手伝いをします。
ありがとうございます。
古いオブジェクトを参照するすべての変数を 'null 'に設定して解放しようとしましたか? –
イメージ(ビットマップ、圧縮されていない)の大きさはどれですか?また、どのデバイスを実行しているのですか?また、コード内に大量のメモリを占有している他のものがありますか? – snapfractalpop
ありがとうございます。古いオブジェクトを解放するには?私はガベージコレクションを使用してJavaを知っています。したがって、リリース機能はありません。私はimage.recycle()を使用しましたが、結果は同じです。スケールダウンするとエラーは発生しません。私はwhileループでこれを使用しました。カウンタが3を超えると、プロセスは強制終了されます。イメージを拡大縮小するためにimage.createbitmap()を使用する他の方法はありますか?私はアンドロイドのために新しい人だから使っています。 – user1304842