我正在开发一个Android应用程序,它在一个页面中有七个滑块。即,存在七个问题,并且每个问题对应一个滑块。用户可以通过滑动每个滑块中的指针来回答问题。在S3中,此页面崩溃了。我们在本节中使用高分辨率图像。
这是由于S3中的堆大小减少了吗?我们可以解决这个问题吗?有什么方法可以解决这个问题吗?对于这个框架,我们是否需要使用质量较差的图像(这是不可取的)?
答案 0 :(得分:0)
你是loading Bitmaps Efficiently吗?
如果是,那么您可以尝试使用
增加堆大小android:largeHeap="true"
在AndroidManifest文件的<application>
标记中。
警告:
- 较大的堆大小意味着更长的GC(垃圾收集)时间。
- 如果你的应用堆大小更大,它会显着减慢其他应用,用户很快就会知道你的应用是问题。
- 请不要因为内存错误而使用此选项。
答案 1 :(得分:0)
http://developer.android.com/training/displaying-bitmaps/load-bitmap.html
有效加载位图。请参阅将缩小版本加载到内存主题下的链接。
在不使用时回收位图。
http://www.youtube.com/watch?v=_CruQY55HOk。谈话是关于内存管理。如果运行内存泄漏,您可以使用MAT Analyzer来查找并修复问题。该视频还讨论了MAT Analyzer的堆积和使用。
答案 2 :(得分:0)
使用以下方法设置从this链接为我提供的ImageView中的图像
public Bitmap ShrinkBitmap(String file, int width, int height){
BitmapFactory.Options bmpFactoryOptions = new BitmapFactory.Options();
bmpFactoryOptions.inJustDecodeBounds = true;
Bitmap bitmap = BitmapFactory.decodeFile(file, bmpFactoryOptions);
int heightRatio = (int)Math.ceil(bmpFactoryOptions.outHeight/(float)height);
int widthRatio = (int)Math.ceil(bmpFactoryOptions.outWidth/(float)width);
if (heightRatio > 1 || widthRatio > 1)
{
if (heightRatio > widthRatio)
{
bmpFactoryOptions.inSampleSize = heightRatio;
} else {
bmpFactoryOptions.inSampleSize = widthRatio;
}
}
bmpFactoryOptions.inJustDecodeBounds = false;
bitmap = BitmapFactory.decodeFile(file, bmpFactoryOptions);
return bitmap;
}