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());

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

アプリを Eclipse から起動して実行できるようにすると、舞台裏で何が起こっているのでしょうか? プログラムで同じ手順を実行して、通常の起動時にクラッシュしないようにすることはできますか? または、他の描画アルゴリズム (OpenGL など) を使用する必要がありますか?

どうもありがとう。

4

1 に答える 1

1

解決策は簡単でした。コードのどこかに Canvas#setBitmap(bitmaps[?]) という Canvas を作成しましたが、参照を解放するには Canvas.setBitmap(null) を呼び出す必要があることに気付きませんでした。

于 2012-06-23T01:24:28.090 に答える