2013-04-01 55 views
0

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

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

+1

logcat的PLS工作???? –

+0

可以发布你的屏幕快照吗?你在一个屏幕上显示所有7个相关图像的问题。 – Raghunandan

回答

0

使用下面的方法来设置在ImageView的图像从this环节得到了我

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; 
      } 
+0

http://www.youtube.com/watch?v=_CruQY55HOk。视频中的人给出了关于使用System.gc();的警告。 – Raghunandan

+0

对不起,我的视频流慢,所以我无法观看视频,但我已经使用system.gc(),它并没有给我造成任何麻烦 –

+0

@ Auto-Droid检查链接http://stackoverflow.com/问题/ 2414105 /为什么 - 是 - 它 - 一个坏实践通话系统-GC。 – Raghunandan

0

你是loading Bitmaps Efficiently

如果是的话,那么你可以尝试在AndroidManifest文件您<application>标签使用

android:largeHeap="true" 

增加堆的大小。

警告:

  • 较大的堆大小意味着更长的(垃圾收集)GC时间。
  • 如果您的应用程序堆大小较大,则会显着降低其他应用程序的速度,用户很快就会知道您的应用程序存在问题。
  • 请不要仅仅因为出现内存错误而使用此选项。
+0

http://www.youtube.com/watch?v=_CruQY55HOk。更多的堆内存,更频繁的垃圾收集。视频中的人给出了关于使用大堆的大警告。 – Raghunandan

+0

感谢您的快速响应。我需要知道的第一件事是,这是可能解决这个问题在S3与更高分辨率的图像? –

+0

@Raghunandan我知道,但你可以使用它,如果你需要你的应用程序该死的执行没有更多的选项可用。 –