位图和内存资源

问题描述 投票:0回答:1

我正在编写一个使用相机生成的位图图像的应用程序。这些由应用裁剪和存储。用户可以在下一个活动中将这些图像用作玩家令牌。问题是应用程序似乎要保留所有这些图像并将它们存储在内存中,直到应用程序崩溃为止。

概述:一个活动(选择屏幕)最多可容纳19张图像。从选择屏幕中选择的下一个活动(游戏屏幕)保存1至8张图像。效果很好(尽管此阶段应用程序的速度约为120mb)。

[当用户返回到选择屏幕以开始新游戏并再次选择图像时,我们的点击量超过170mb,应用程序崩溃。

我一直在阅读并尝试人们提供的不同解决方案,到目前为止,没有任何改变。有什么简单的我想念的吗?还是这需要对我到目前为止所做的一切进行复杂的重新布线?

编辑

使用以下代码添加的图像。在播放器选择屏幕中:

File file = getFileStreamPath("imgPlayer1.png");
    if(file.exists()) {
        btnP1.setImageBitmap(getThumbnail("imgPlayer1.png"));
        g.setPlayer1img(true);
    } else {
        btnP1.setImageResource(R.drawable.player_blank);
        g.setPlayer1img(false);
    }

在游戏画面上:

if (g.getPlayer1Chosen()) {
        btnGP1.setImageBitmap(getThumbnail("imgPlayer1.png"));
        btnGP1.setVisibility(View.VISIBLE);
    }

原始创建代码:

try {
        FileOutputStream fos = context.openFileOutput("img" + foo + ".png",
                Context.MODE_PRIVATE);

        image.compress(Bitmap.CompressFormat.PNG, 100, fos);
        fos.close();

        return true;
    } catch (Exception e) {
        Log.e("saveToInternalStorage()", e.getMessage());
        return false;
    }

我读过有关压缩图像尺寸的信息,但答复是图像质量大大降低了。这不可能发生。而且,似乎如果我只这样做,问题仍然存在,只会以较低的速度泄漏内存。

android memory bitmap
1个回答
0
投票

我没有找到解决方案。 Android上的图像使用效率非常低。随着人们对材料设计的鼓励显而易见,我们改变了应用程序的整体外观。现在,它使用的图像少得多,而使用的正方形则更多(视图)。内存问题已解决。

© www.soinside.com 2019 - 2024. All rights reserved.