可能重复:
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)
如何避免此错误,请帮助我的朋友
答案 0 :(得分:0)
您可以通过调用finish()方法完成Listview活动,并在onDestroy方法中清除所有对象,drawables为null。
答案 1 :(得分:0)
以下是处理问题的方法。