OutOfMemoryError android m

好的,我是Android新手,有这个小问题,我无法找到答案。 我知道这是一个常见的错误,但我发现的所有其他线程对我没有帮助,所以我必须创建自己的。

我只是使用listview,并有一个适配器。 当在列表视图项目中上下滚动时,突然出现错误,甚至没有点击项目。

以下是一些日志:

D / OpenGLRenderer:启用调试模式0

D / dalvikvm:GC_FOR_ALLOC释放173K,36%免费17008K / 26172K,暂停15ms,总共15ms

I / dalvikvm-heap:为10760416字节的分配增加堆(碎片大小)至31.092MB

D / AbsListView:调用unregisterIRListener()

D / AbsListView:调用unregisterIRListener()

D / AbsListView:调用unregisterIRListener()

I / dalvikvm-heap:为33177616字节的分配增加堆(碎片大小)至61.836MB

D / dalvikvm:GC_FOR_ALLOC释放52K,14%免费59979K / 69088K,暂停14ms,总共14ms

I / dalvikvm-heap:为18662416字节的分配增加堆(碎片大小)为79.593MB

D / dalvikvm:GC_FOR_ALLOC释放7K,11%免费78200K / 87316K,暂停15ms,总共15ms

I / dalvikvm-heap:为33177616字节的分配增加堆(碎片情况)至111.230MB

D / dalvikvm:GC_FOR_ALLOC释放10515K,15%免费101867K / 119720K,暂停17ms,总共17ms

I / dalvikvm-heap:强制收集SoftReferences以获取16104976字节的分配

D / dalvikvm:GC_BEFORE_OOM释放15K,15%免费101851K / 119720K,暂停28ms,总计28ms

E / dalvikvm-heap:16104976字节分配的内存不足。

关闭虚拟机

W / dalvikvm:threadid = 1:线程以未捕获的异常退出(group = 0x418ceda0)

E / AndroidRuntime:致命异常:主要过程:com.example.hesham.assignment2,PID:24883 java.lang.OutOfMemoryError在android.graphics.BitmapFactory.nativeDecodeAsset(本机方法)在android.graphics.BitmapFactory.decodeStream(BitmapFactory.java :677)at android.graphics.BitmapFactory.decodeResourceStream(BitmapFactory.java:507)at android.graphics.drawable.Drawable.createFromResourceStream(Drawable.java:872)at android.content.res.Resources.loadDrawable(Resources.java: 3024)at android.content.res.Resources.getDrawable(Resources.java:1586)at android.view.View.setBackgroundResource(View.java:16144)at com.example.hesham.assignment2.myAdaptor.getView(myAdaptor.java :47)在android.widget.AbsListView.obtainView(AbsListView.java:2694)在android.widget.ListView.makeAndAddView(ListView.java:1811)在android.widget.ListView.fillDown(ListView.java:697)在android .widget.ListView.fillGap(ListView.java:661)在android.widget.AbsListView.trackMotionScroll(AbsListView.java:6686)at android.w 在android.widget.AbsListView.onTouchMove(AbsListView.java:4789)idget.AbsListView.scrollIfNeeded(AbsListView.java:3946)在android.widget.AbsListView.onTouchEvent(AbsListView.java:4617)在android.view.View.dispatchTouchEvent (View.java:8107)在android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2405)在android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2129)在android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java: 2411)在android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2144)在android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2411)在android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2144)在机器人。 view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2411)在android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2144)在android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2411)在android.view.ViewGroup.dispatchTouchEvent (ViewGroup.java:2144)在android.view.ViewGroup.dispatchTransfor medTouchEvent(ViewGroup.java:2411)在android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2144)在com.android.internal.policy.impl.PhoneWindow $ DecorView.superDispatchTouchEvent(PhoneWindow.java:2280)在com.android .internal.policy.impl.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1615)在android.app.Activity.dispatchTouchEvent(Activity.java:2544)在android.support.v7.app.ActionBarActivityDelegateICS $ WindowCallbackWrapper.dispatchTouchEvent(ActionBarActivityDelegateICS.java :268)at android.view.View.dispatchPointerEvent(View.java:8315)at com.android.internal.policy.impl.PhoneWindow $ DecorView.dispatchTouchEvent(PhoneWindow.java:2228)at android.view.ViewRootImpl $ ViewPostImeInputStage。 processPointerEvent(ViewRootImpl.java:4598)在android.view.ViewRootImpl $ ViewPostImeInputStage.onProcess(ViewRootImpl.java:4466)在android.view.ViewRootImpl $ InputStage.deliver(ViewRootImpl.java:4024)在android.view.ViewRootImpl $ InputStage .onDeliverToNext(ViewRootImpl.java:4078)在android。 view.ViewRootImpl $ InputStage.forward(ViewRootImpl.java:4047)在android.view.ViewRootImpl $ AsyncInputStage.forward(ViewRootImpl.java:4158)在android.view.ViewRootImpl $ InputStage.apply(ViewRootImpl.java:4055)在安卓.view.ViewRootImpl $ AsyncInputStage.apply(ViewRootImpl.java:4215)在android.view.ViewRootImpl $ InputStage.deliver(ViewRootImpl.java:4024)在android.view.ViewRootImpl $ InputStage.onDeliverToNext(ViewRootImpl.java:4078)在android.view.ViewRootImpl $ InputStage.forward(ViewRootImpl.java:4047)at android.view.ViewRootImpl $ InputStage.apply(ViewRootImpl.java:4055)at android.view.ViewRootImpl $ InputStage.deliver(ViewRootImpl.java:4024)在android.view.ViewRootImpl.deliverInputEvent(ViewRootImpl.java:6416)在android.view.ViewRootImpl.doProcessInputEvents(ViewRootImpl.java:6320)在android.view.ViewRootImpl.enqueueInputEvent(ViewRootImpl.java:6291)在android.view。 ViewRootImpl.enqueueInputEvent(ViewRootImpl.java:6256)at android.view.ViewRootImpl $ WindowInputEventReceiver.onInputEve NT(ViewRootImpl.java:649

还有一个突出显示的行,它是指适配器中的一行。

y2.setBackgroundResource(项[I] .IMG);

这是我的整个适配器

public class myAdaptor extends BaseAdapter{
Data items[];
Context context;
TextView y;
ImageView y2;
myAdaptor(Data items[], Context context)
{
    this.items=items;
    this.context=context;
}

@Override
public int getCount() {
    return items.length;
}

@Override
public Object getItem(int i) {
    return i;
}

@Override
public long getItemId(int i) {
    return i;
}

@Override
public View getView(int i, View view, ViewGroup viewGroup) {
    View x=view;
    if(x==null)
    {
        x=View.inflate(context,R.layout.item,null);
    }
    y=(TextView) x.findViewById(R.id.textView);
    y2=(ImageView) x.findViewById(R.id.imageView);
    y.setText(items[i].str1);
    y2.setBackgroundResource(items[i].img);

    return x;
}}

所以我找不到为什么我不断收到这个错误,而且我没有使用我发现所有其他线程正在使用的位图。 那么有关如何解决这个问题的任何想法? 请让我知道是否需要用我的任何代码更新线程。 很抱歉,很长的文章,并感谢你。


尝试这个

在res文件夹中创建一个名为drawable-nodpi的文件夹。 把你所有的图像放在那里。

链接地址: http://www.djcxy.com/p/18359.html

上一篇: OutOfMemoryError android m

下一篇: error while tapping image