以下を使用して、複数のビットマップ(フルスクリーン画像から個々のスプライトフレームまでさまざまなサイズの約40)をロードしています:
Bitmap graphic = BitmapFactory.decodeResource(res, R.drawable.mygraphics);
そして、これを使用してそれらをスケーリングしています(画面に対してどのデバイスでも同じサイズに見えるように):
Bitmap scaledGraphic = Bitmap.createScaledBitmap(mygraphics, screen.width()/2, screen.height()/2, true);
上記の例は、画像を画面サイズの 4 分の 1 に拡大/縮小する引数のためだけのものです。
次に、onDraw() メソッドでスケーリングされた画像を参照します。
canvas.drawBitmap(scaledGraphic, X, Y, null);
これはすべて正常に機能し、さまざまな画面サイズで見栄えがします。
私の質問は、私が理解しているように、 createScaledBitmap は元のビットマップからメモリ内に別のビットマップを作成したことです(元のビットマップをスケーリングするだけではありません)。この場合、スケーリングされたビットマップが作成されると、元のビットマップはもう必要ないので、メモリから削除する方法はありますか?
リサイクルに電話する必要がありますか?私は自分のコードを最適化しようとしているだけで、アニメーションの吃音などに多くの問題があります... GC が数回 (多くはない) 呼び出されており、なぜこれが起こっているのか本当にわかりませんが、良いと思いましたとにかくこれを整理する練習をしてください。