我正在将棋盘游戏移植到 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 会发生什么?我从来没有发生过内存崩溃,但我如何确保它们被回收/垃圾收集?
最好的祝福。