Android 位图和内存资源

Android 位图和内存资源,android,memory,bitmap,Android,Memory,Bitmap,我正在编写一个应用程序,利用相机生成的位图图像。这些被裁剪并由应用程序存储。用户可以在下一个活动中将这些图像用作玩家令牌。存在一个问题,应用程序似乎保留了所有这些图像并将它们存储在内存中,直到应用程序崩溃 重述:活动选择屏幕最多可容纳19张图像。下一个活动游戏屏幕包含1到8个从选择屏幕中选择的图像。尽管到目前为止,该应用程序的容量已经达到了大约120mb,但它仍然可以正常工作 当用户返回选择屏幕开始新游戏,并再次选择图像时,我们的点击量超过170mb,应用程序崩溃 我一直在阅读这篇文章,并尝试人

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

重述:活动选择屏幕最多可容纳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上的图像使用效率非常低。随着对材料设计的鼓励,我们改变了应用程序的整体外观。它现在使用更少的图像和更多的彩色方块视图。内存问题已解决。

用户选择时是否压缩了它?@Quick Learner:谢谢您的回答。上面添加了使用的代码。