0

我目前正在开发一款适用于 Android 的游戏。该游戏是一款实时战略游戏,它使用瓷砖或单元格,并拥有将占据这些单元格的演员(单位、树木、岩石等)。

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

像这样:

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

现在这很好,考虑到我的细胞类型很少,只有一个演员,但是当我有数百个图像要解码而不必每次绘制对象时都解码资源时,我该怎么做呢?如果我要解码地图类中的所有资源,会导致内存不足错误吗?

4

1 回答 1

2

我不能说解码资源是否会导致内存不足错误,因为我不知道它们的大小。但是,资源本身的解码,假设有足够的内存来处理正在解码的任何内容,不应该导致内存不足异常。更可能的结果是,根据您需要解码资源的频率,它只会减慢您的应用程序的速度。

您是否考虑过使用缓存?如果您正在解码资源,则可以使用LRUcache android 文档中演示的简单方法来避免重复此过程。如果您根据需要对资源进行解码,将它们存储到缓存中,然后在再次解码之前检查缓存是否存在 - 您可能会节省很多时间。

于 2013-05-14T19:11:42.243 回答