我正在编写一个使用相机生成的位图图像的应用程序。这些由应用裁剪和存储。用户可以在下一个活动中将这些图像用作玩家令牌。问题是应用程序似乎要保留所有这些图像并将它们存储在内存中,直到应用程序崩溃为止。
概述:一个活动(选择屏幕)最多可容纳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上的图像使用效率非常低。随着人们对材料设计的鼓励显而易见,我们改变了应用程序的整体外观。现在,它使用的图像少得多,而使用的正方形则更多(视图)。内存问题已解决。