位图和内存资源

时间:2015-05-26 03:15:39

标签: android memory bitmap

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

回顾一下:活动(选择屏幕)最多可容纳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;
    }

当你打电话给我时,我已经阅读了有关缩小图像大小的信息,但回答是图像质量大幅下降。这不可能发生。此外,似乎只做了那个,问题仍然存在,它只会以较慢的速度泄漏内存。

1 个答案:

答案 0 :(得分:0)

我找不到解决方法。 Android上的图像使用效率非常低。随着对材料设计的鼓励现在显而易见,我们转换了应用程序的整体外观。它现在使用更少的图像和更多彩色方块(视图)。内存问题已解决。