0

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

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

4

3 回答 3

0

您是否有效地加载位图

如果是,那么您可以尝试通过使用来增加堆大小

android:largeHeap="true"

<application>AndroidManifest 文件中的标签中。

警告:

  • 更大的堆大小意味着更长的 GC(垃圾收集)时间。
  • 如果你让你的应用程序堆大小变大,它会显着降低其他应用程序的速度,用户很快就会知道你的应用程序是问题所在。
  • 不要仅仅因为你得到内存错误而使用这个选项。
于 2013-04-01T10:25:19.460 回答
0

http://developer.android.com/training/displaying-bitmaps/load-bitmap.html

有效地加载位图。请参阅将缩小的版本加载到内存中主题下的链接。

不使用时回收位图。

http://www.youtube.com/watch?v=_CruQY55HOk。谈话是关于内存管理的。如果运行内存泄漏,您可以使用 MAT Analyzer 查找并修复问题。该视频还讨论了堆和 MAT Analyzer 的使用。

于 2013-04-01T10:27:44.767 回答
0

使用下面的方法设置从这个链接获得的 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;
            }
于 2013-04-01T10:29:58.997 回答