我正在将一个桌面游戏移植到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兆字节的内存,除非我弄错了)并保留它们,或者我应该每次用户触摸板时重新加载它们,这可能经常发生?
其次,在每个MotionEvent.ACTION_MOVE中,重新绘制电路板,使用前两行代码 - 这些scaledBitmap和我创建的新BitmapDrawable会发生什么?我从未遇到过内存崩溃,但我如何确保它们被回收/垃圾收集?
最好的问候。
答案 0 :(得分:0)
你可以使用Android的新内存缓存:http://developer.android.com/training/displaying-bitmaps/cache-bitmap.html然后你只需要重新下载/重新加载已经从内存中取出的图像,你也不会崩溃。