0

我正在将棋盘游戏移植到 Android。板本身是一个 1000x1000 的位图,在 png 格式中大约需要 250k。对于小屏幕设备上的用户,它可以缩放和拖动,只需以下代码:

Bitmap scaledBitmap = Bitmap.createBitmap(mBoardBitmap, left, top, width, width, matrix, true);
board.setBackgroundDrawable(new BitmapDrawable(getResources(), scaledBitmap));

您注意到到目前为止我有一个成员 mBoardBitmap,我用它来加载我的 1000x1000 位图 onCreate()。当用户移动或缩放时,加载一次似乎比重复加载更合适。我开始质疑这种策略,因为我需要在我的板上添加层,因此每层都有一个位图。

那么我应该加载几个 1000x1000 位图(1 MB 内存,除非我弄错了)并将它们保留在那里,还是应该在每次用户触摸板时重新加载它们,这可能很频繁?

其次,在每个 MotionEvent.ACTION_MOVE 中,使用前两行代码重新绘制电路板 - 我创建的这些 scaledBitmap 和新 BitmapDrawable 会发生什么?我从来没有发生过内存崩溃,但我如何确保它们被回收/垃圾收集?

最好的祝福。

4

1 回答 1

0

您可以使用适用于 Android 的新内存缓存:http: //developer.android.com/training/displaying-bitmaps/cache-bitmap.html然后您只需重新下载/重新加载已从内存中取出的图像,您也不会碰撞。

于 2012-04-26T10:03:26.373 回答