尝试在我的小部件中加载图像时出现OutOfMemoryError

时间:2015-05-17 16:24:06

标签: android memory-management bitmap out-of-memory bitmapimage

您好我得到以下错误,当我尝试启动我的小部件时,它是一个笔记记录应用程序,这是我得到的错误,请使用我的代码提供一个可行的答案,很乐意接受有效的答案,谢谢提前: -

05-16 02:53:42.491: E/AndroidRuntime(5335): java.lang.OutOfMemoryError

并且错误指向我的代码中的这一行: -

 File imgFile = new File(data.get(position).get("path"));
 Bitmap myBitmap = BitmapFactory.decodeFile(imgFile.getAbsolutePath());
 imageView.setImageBitmap(myBitmap);

2 个答案:

答案 0 :(得分:1)

你可以使用Picasso为你处理这一切,我认为这是强烈推荐的。它就像包含库一样简单,并称之为:

Picasso.with(context).load(myBitmap).into(imageView);

或者,您可以尝试此link中列出的方法。

具体来说,就是这个。

public static Bitmap decodeSampledBitmapFromResource(Resources res, String resId, int    reqWidth, int reqHeight) {

 // First decode with inJustDecodeBounds=true to check dimensions
 final BitmapFactory.Options options = new BitmapFactory.Options();
 options.inJustDecodeBounds = true;
 BitmapFactory.decodeFile(resId, options);

 // Calculate inSampleSize
 options.inSampleSize = calculateInSampleSize(options, reqWidth, reqHeight);

 // Decode bitmap with inSampleSize set
 options.inJustDecodeBounds = false;
 options.inPreferredConfig = Config.RGB_565; <---- the options and the one below are important
 options.inDither = true;
 return BitmapFactory.decodeFile(resId, options);
 }

答案 1 :(得分:0)

这可能会帮助那些人,几个小时之后没有回答这个问题。我找到了一种处理outOfMemoryError的方法。我在我的清单文件中添加了这行代码。

android:largeHeap="true"

我将此添加到整个应用程序中,如下所示: -

<application
  android:icon="@drawable/ic_launcher"
  android:largeHeap="true"
  android:label="@string/app_name" >

android:largeHeap是增加分配内存到app的工具。