2012-05-10 11 views
2

みんな!大きなビットマップが必ずしも作成されない

私のアプリでは、いくつかのデータに基づいてプロットを描きます。プロットはスクロールとズームがあります。 MyMainFragment.onActivityCreated()でこの目的のために2つのビットマップを作成します。

if (bitmaps[0] != null) 
     { 
     return; 
     }  

final int deviceWidth = getResources().getDisplayMetrics().widthPixels; 
      final int deviceHeight = getResources().getDisplayMetrics().heightPixels; 
      final int deviceMaxDim = Math.max(deviceHeight, deviceWidth); 

      bitmaps[0] = Bitmap.createBitmap(
      deviceMaxDim * 2, 
      deviceMaxDim * 1, 
      Bitmap.Config.ARGB_8888); 

      bitmaps[1] = Bitmap.createBitmap(
      bitmaps[0].getWidth(), 
      bitmaps[0].getHeight(), 
      bitmaps[0].getConfig()); 

私が使用する描画アルゴリズムのために2つのビットマップが必要であり、1だけではありません。 Asus Transformerでプログラムを実行すると、ピクセル単位のbmpサイズは1280 * 2 * 1280となり、バイトサイズは1280 * 2 * 1280 * 4になります。しかし、タブレットから普通のユーザーのように起動すると、2回ごとにクラッシュします。

Eclipseから実行可能なアプリケーションを起動したときに何が起こっているのですか?また、プログラムが正常に起動したときにクラッシュしないように同じ手順を実行できますか?それとも、OpenGLのような他の描画アルゴリズムを使うべきですか?

ありがとうございます。

+0

http://code.google.com/p/android/issues/detail?id=10821が役立つ可能性があります。 – stacker

+0

ありがとう、スタッカー!アンドロイドのバージョンは私のデバイスで4.0.3ですが、それは私の状況に非常に近いと思われます。 – RobinBobin

答えて

1

解決策は単純でした。 Canvas#setBitmap(ビットマップ[?])と呼ばれるコードのどこかにCanvasを作成しましたが、Canvas.setBitmap(null)を呼び出して参照を解放する必要があります。

関連する問題