Android - S3中的内存不足问题

时间:2013-04-01 10:21:30

标签: android uiimageview out-of-memory

我正在开发一个Android应用程序,它在一个页面中有七个滑块。即,存在七个问题,并且每个问题对应一个滑块。用户可以通过滑动每个滑块中的指针来回答问题。在S3中,此页面崩溃了。我们在本节中使用高分辨率图像。

这是由于S3中的堆大小减少了吗?我们可以解决这个问题吗?有什么方法可以解决这个问题吗?对于这个框架,我们是否需要使用质量较差的图像(这是不可取的)?

3 个答案:

答案 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;
            }