在多活动应用中加载位图的最佳方法

时间:2014-03-09 04:32:20

标签: android memory-management bitmap

我正在开发我的第一款Android游戏,它包含了大量的位图。一切都很好,直到我决定在游戏活动背后的应用程序中添加“主要活动”。

在:

[Game Activity] --> SurfaceView --> init (loading bitmaps) --> starting the game

现在:

[Main Activity] --> (user needs to click on "PLAY" button) -->...
[Game Activity] --> SurfaceView --> init (loading bitmaps) --> starting the game

这是问题所在。每次用户点击PLAY按钮时,都会创建一个新的Game Activity实例,它必须经过“init”并重新加载位图... 编辑:例如,如果在游戏过程中用户按下后退按钮。

显然,这是一个设计糟糕的架构。有人能提出更有效的建议吗?

1 个答案:

答案 0 :(得分:1)

使用静态类存储位图,在游戏开始时调用load()方法(可能在启动画面期间),此方法还可确保您只将每个位图加载到内存中一次。

例如:

public class Art {

    public static Bitmap enemy;
    public static Bitmap player;

    public static void load () {
        enemy = loadBitmap('enemy.png');
        player = loadBitmap('player.png');
    }

    private static Bitmap loadBitmap(String filename) {
        //create and return bitmap here
    }

}

然后,当您创建游戏对象时,您只需调用Art.player即可获得您的玩家形象。

也许,你不应该使用两个活动,而只是在用户点击游戏时移动布局。