位图和内存问题,操作方法?

时间:2012-04-26 09:43:08

标签: android memory bitmap

我正在将一个桌面游戏移植到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会发生什么?我从未遇到过内存崩溃,但我如何确保它们被回收/垃圾收集?

最好的问候。

1 个答案:

答案 0 :(得分:0)

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