在Android中不断解码许多不同的资源

时间:2013-05-14 18:36:22

标签: android

我目前正在开发适用于Android的游戏。游戏是一个实时战略游戏,使用瓷砖或细胞,并有演员(单位,树木,岩石等)占据这些细胞。

在我的游戏中,单元格和actor是具有自己的绘制方法的对象。由于担心速度问题,我目前正在解码地图类中的资源,并将解码后的图像提供给对象的绘制方法。

像这样:

_waterCell = BitmapFactory.decodeResource(context.getResources(), R.drawable.watertile);
...
_row.get(Cell).draw(_waterCell, canvas, _paint, _X, _Y);

现在这很好,考虑到我有几个单元格类型,只有一个演员,但是当我有数百个图像要解码而不必每次绘制对象时都要解码资源时,我将如何解决这个问题?如果我要解码地图类中的所有资源,是否会导致内存不足错误?

1 个答案:

答案 0 :(得分:2)

我不能说解码资源是否会导致内存不足错误,因为我不知道它们的大小。但是,假设有足够的内存来处理正在解码的内容,资源本身的解码不应该导致内存不足异常。结果越多,取决于您需要解码资源的频率,它只会减慢您的应用。

你考虑过使用缓存吗?如果您正在解码资源,则可以使用简单的LRUcache as demonstrated in the android docs来避免重复此过程。如果您根据需要解码资源,请将它们存储到缓存中,然后在再次解码之前检查缓存是否存在 - 您可以节省很多时间。