Android 位图和内存资源
我正在编写一个应用程序,利用相机生成的位图图像。这些被裁剪并由应用程序存储。用户可以在下一个活动中将这些图像用作玩家令牌。存在一个问题,应用程序似乎保留了所有这些图像并将它们存储在内存中,直到应用程序崩溃 重述:活动选择屏幕最多可容纳19张图像。下一个活动游戏屏幕包含1到8个从选择屏幕中选择的图像。尽管到目前为止,该应用程序的容量已经达到了大约120mb,但它仍然可以正常工作 当用户返回选择屏幕开始新游戏,并再次选择图像时,我们的点击量超过170mb,应用程序崩溃 我一直在阅读这篇文章,并尝试人们提供的不同解决方案,到目前为止,没有任何改变。有什么简单的东西我遗漏了吗?或者这将需要对我迄今为止所做的一切进行复杂的重新布线 编辑 使用下面的代码添加的图像。在播放器选择屏幕中:Android 位图和内存资源,android,memory,bitmap,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;
}
当你称之为压缩图像时,我读到了关于压缩图像大小的内容,但回答是图像质量大大降低了。这不可能发生。而且,如果我只这样做,问题仍然存在,它只会以较慢的速度泄漏内存。我找不到解决方法。Android上的图像使用效率非常低。随着对材料设计的鼓励,我们改变了应用程序的整体外观。它现在使用更少的图像和更多的彩色方块视图。内存问题已解决。用户选择时是否压缩了它?@Quick Learner:谢谢您的回答。上面添加了使用的代码。