我正在编写一个使用相机生成的位图图像的应用程序。这些由应用程序裁剪和存储。用户可以在下一个活动中将这些图像用作玩家代币。存在一个问题,即应用程序似乎保留所有这些图像并将其存储在内存中,直到应用程序崩溃。
回顾一下:活动(选择屏幕)最多可容纳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;
}
当你打电话给我时,我已经阅读了有关缩小图像大小的信息,但回答是图像质量大幅下降。这不可能发生。此外,似乎只做了那个,问题仍然存在,它只会以较慢的速度泄漏内存。
答案 0 :(得分:0)
我找不到解决方法。 Android上的图像使用效率非常低。随着对材料设计的鼓励现在显而易见,我们转换了应用程序的整体外观。它现在使用更少的图像和更多彩色方块(视图)。内存问题已解决。