Android应用程序中的内存不足错误

时间:2011-08-17 04:42:42

标签: android out-of-memory

  

可能重复:
  OutOfMemoryError: bitmap size exceeds VM budget :- Android

在我的应用程序中,我有一个自定义列表视图,显示每个列表的图像和一些文本视图。

我的drawable中有.png格式的图像。每次我将图像转换为drawable后列出图像。如果用户打开列表视图活动并返回上一个活动并再次打开列表视图,则会出现内存不足错误。

为了避免这种情况,我设置了bitmap = null,我甚至已经回收了它。但仍然存在同样的错误。

if(icon_bmp != null)
        {
        icon_bmp.recycle();
        icon_bmp = null;
        System.gc();
        }

但我仍然得到相同的内存不足错误。以下是我的错误日志

 Uncaught handler: thread main exiting due to uncaught exception
08-12 19:23:16.168: ERROR/AndroidRuntime(14107): java.lang.OutOfMemoryError: bitmap size exceeds VM budget
08-12 19:23:16.168: ERROR/AndroidRuntime(14107):     at android.graphics.Bitmap.nativeCreate(Native Method)
08-12 19:23:16.168: ERROR/AndroidRuntime(14107):     at android.graphics.Bitmap.createBitmap(Bitmap.java:468)
08-12 19:23:16.168: ERROR/AndroidRuntime(14107):     at android.graphics.Bitmap.createBitmap(Bitmap.java:435)
08-12 19:23:16.168: ERROR/AndroidRuntime(14107):     at android.graphics.Bitmap.createScaledBitmap(Bitmap.java:340)
08-12 19:23:16.168: ERROR/AndroidRuntime(14107):     at android.graphics.BitmapFactory.finishDecode(BitmapFactory.java:488)
08-12 19:23:16.168: ERROR/AndroidRuntime(14107):     at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:462)
08-12 19:23:16.168: ERROR/AndroidRuntime(14107):     at android.graphics.BitmapFactory.decodeResourceStream(BitmapFactory.java:323)
08-12 19:23:16.168: ERROR/AndroidRuntime(14107):     at android.graphics.BitmapFactory.decodeResource(BitmapFactory.java:346)
08-12 19:23:16.168: ERROR/AndroidRuntime(14107):     at android.graphics.BitmapFactory.decodeResource(BitmapFactory.java:372)
08-12 19:23:16.168: ERROR/AndroidRuntime(14107):     at com.pack.LocalDish.CustomAdapter.DishListViewAdapter.populateListData(DishListViewAdapter.java:129)
08-12 19:23:16.168: ERROR/AndroidRuntime(14107):     at com.pack.LocalDish.CustomAdapter.DishListViewAdapter.getView(DishListViewAdapter.java:82)
08-12 19:23:16.168: ERROR/AndroidRuntime(14107):     at android.widget.AbsListView.obtainView(AbsListView.java:1256)
08-12 19:23:16.168: ERROR/AndroidRuntime(14107):     at android.widget.ListView.makeAndAddView(ListView.java:1668)
08-12 19:23:16.168: ERROR/AndroidRuntime(14107):     at android.widget.ListView.fillDown(ListView.java:637)
08-12 19:23:16.168: ERROR/AndroidRuntime(14107):     at android.widget.ListView.fillGap(ListView.java:608)
08-12 19:23:16.168: ERROR/AndroidRuntime(14107):     at android.widget.AbsListView.trackMotionScroll(AbsListView.java:2531)
08-12 19:23:16.168: ERROR/AndroidRuntime(14107):     at android.widget.AbsListView$FlingRunnable.run(AbsListView.java:2353)

如何避免此错误,请帮助我的朋友

2 个答案:

答案 0 :(得分:0)

您可以通过调用finish()方法完成Listview活动,并在onDestroy方法中清除所有对象,drawables为null。

答案 1 :(得分:0)

以下是处理问题的方法。

Image Size Issue