Android应用程序因内存不足而崩溃
我正在开发一个有4个标签的应用程序Android应用程序因内存不足而崩溃,android,Android,我正在开发一个有4个标签的应用程序 表1:可扩展的listview,包含20个组 表2:可扩展的listview,包含30个组 表3:Gridview包含22项(每行3列) [可滚动] 4.表4:包含24项的网格视图(每行3列) [可滚动] MyGridview适配器实现如下:(表3和表4使用相同的适配器) 公共类LogoImageAdapter扩展了BaseAdapter{ 私人语境; 私有列表标识; 公共LogoImageAdapter(上下文上下文,列出标识){ this.context=
listview
,包含20个组listview
,包含30个组Gridview
包含22项(每行3列)
[可滚动]
4.表4:包含24项的网格视图(每行3列)
[可滚动]Gridview
适配器实现如下:(表3和表4使用相同的适配器)
公共类LogoImageAdapter扩展了BaseAdapter{
私人语境;
私有列表标识;
公共LogoImageAdapter(上下文上下文,列出标识){
this.context=上下文;
this.logoIds=logoIds;
}
@凌驾
public int getCount(){
返回logoIds.size();
}
@凌驾
公共对象getItem(int位置){
返回logoIds.get(位置);
}
@凌驾
公共长getItemId(int位置){
返回logoIds.get(位置);
}
@凌驾
公共视图getView(int位置、视图转换视图、视图组父视图){
视图网格视图;
if(convertView==null){
LayoutFlater充气器=(LayoutFlater)context.getSystemService(context.LAYOUT\u充气器\u服务);
gridView=充气机。充气(R.layout.grid_项,空);
}否则{
gridView=convertView;
}
/*TextView title=(TextView)gridView.findViewById(R.id.siteNameTV);
title.setText(“title_”+位置)*/
ImageView logoImage=(ImageView)gridView.findViewById(R.id.logoImageView);
logoImage.setImageResource(logoIds.get(position));
返回gridView;
}
}
问题是,该应用程序消耗了近100 MB内存,并且经常崩溃。
我认为应用程序崩溃是由于我的gridview实现。我在哪里犯了错误
编辑:
Logcat:
10-05 15:06:55.458 32557-32557/pmp.com.instapukkei W/FragmentManager:moveToState:Classified{3fc90a#0 id=0x7f0c006d安卓:切换器:2131492973:1}的片段状态未在线更新;预期状态3已找到2
10-05 15:06:57.907 32557-32557/pmp.com.instapukkei W/FragmentManager:moveToState:fragmentstate for Tourism{33f7512#2 id=0x7f0c006d安卓:切换器:2131492973:2}未在线更新;预期状态3已找到2
10-05 15:06:59.856 32557-32557/pmp.com.instapukkei W/FragmentManager:moveToState:fragmentstate for Shopping{6a52599#3 id=0x7f0c006d android:switcher:2131492973:3}未在线更新;预期状态3已找到2
10-05 15:07:02.252 32557-32557/pmp.com.instapukkei W/FragmentManager:moveToState:Travel的片段状态{26da709#4 id=0x7f0c006d android:switcher:2131492973:4}未在线更新;预期状态3已找到2
10-05 15:07:02.387 32557-32568/pmp.com.instapukkei I/art:将目标GC堆从102MB钳制到96MB
10-05 15:07:07.410 32557-32557/pmp.com.instapukkei W/FragmentManager:moveToState:fragmentstate for Tourism{33f7512#2 id=0x7f0c006d安卓:切换器:2131492973:2}未在线更新;预期状态3已找到2
10-05 15:07:08.494 32557-32557/pmp.com.instapukkei/art:等待阻塞GC Alloc
10-05 15:07:08.501 32557-32568/pmp.com.instapukkei I/art:将目标GC堆从103MB钳制到96MB
10-05 15:07:08.502 32557-32557/pmp.com.instapukkei I/art:WaitForGcToComplete因原因Alloc被阻塞8.292ms
10-05 15:07:08.502 32557-32557/pmp.com.instapukkei/art:启动阻塞GC Alloc
10-05 15:07:11.500 32557-32557/pmp.com.instapukkei W/FragmentManager:moveToState:fragmentstate for Tourism{33f7512#2 id=0x7f0c006d安卓:切换器:2131492973:2}未在线更新;预期状态3已找到2
10-05 15:07:12.775 32557-32557/pmp.com.instapukkei/art:启动阻塞GC Alloc
10-05 15:07:12.775 32557-32557/pmp.com.instapukkei/art:启动阻塞GC Alloc
10-05 15:07:12.802 32557-32557/pmp.com.instapukkei/art:Alloc粘性并发标记扫描GC释放481(18KB)AllocSpace对象,3(3MB)LOS对象,4%空闲,91MB/96MB,暂停465us总计26.676ms
10-05 15:07:12.906 32557-32557/pmp.com.instapukkei/art:启动阻塞GC Alloc
10-05 15:07:12.906 32557-32557/pmp.com.instapukkei/art:启动阻塞GC Alloc
10-05 15:07:12.917 32557-32557/pmp.com.instapukkei I/art:将目标GC堆从103MB钳制到96MB
10-05 15:07:12.917 32557-32557/pmp.com.instapukkei/art:Alloc部分并发标记扫描GC释放840(64KB)AllocSpace对象,5(7MB)LOS对象,8%空闲,87MB/96MB,暂停599us总计10.801ms
10-05 15:07:14.432 32557-32564/pmp.com.instapukkei/art:调试器不再处于活动状态
10-05 15:07:15.214 32557-32557/pmp.com.instapukkei/art:启动阻塞GC Alloc
10-05 15:07:15.214 32557-32557/pmp.com.instapukkei/art:启动阻塞GC Alloc
10-05 15:07:15.225 32557-32557/pmp.com.instapukkei/art:Alloc粘性并发标记扫描GC释放250(8KB)AllocSpace对象,0(0B)LOS对象,3%空闲,92MB/96MB,暂停803us总计10.646ms
10-05 15:07:15.226 32557-32557/pmp.com.instapukkei/art:启动阻塞GC Alloc
10-05 15:07:15.237 32557-32557/pmp.com.instapukkei I/art:将目标GC堆从102MB钳制到96MB
10-05 15:07:15.238 32557-32557/pmp.com.instapukkei/art:Alloc部分并发标记扫描GC释放727(59KB)AllocSpace对象,4(6MB)LOS对象,10%空闲,86MB/96MB,暂停467us总计11.147ms
10-05 15:07:15.318 32557-32557/pmp.com.instapukkei/art:启动阻塞GC Alloc
10-05 15:07:15.318 32557-32557/pmp.com.instapukkei/art:启动阻塞GC Alloc
10-05 15:07:15.323 32557-32557/pmp.com.instapukkei/art:启动阻塞GC Alloc
10-05 15:07:15.331 32557-32557/pmp.com.instapukkei I/art:将目标GC堆从109MB钳制到96MB
10-05 15:07:15.331 32557-32557/pmp.com.instapukkei/art:Alloc部分并发标记扫描GC释放592(58KB)AllocSpace对象,0(0B)LOS对象,2%空闲,93MB/96MB,暂停441us总计7.585ms
10-05 15:07:15.331 32557-32557/pmp.com.instapukkei/艺术:Sta
public class LogoImageAdapter extends BaseAdapter{
private Context context;
private List<Integer> logoIds;
public LogoImageAdapter(Context context, List<Integer> logoIds) {
this.context = context;
this.logoIds = logoIds;
}
@Override
public int getCount() {
return logoIds.size();
}
@Override
public Object getItem(int position) {
return logoIds.get(position);
}
@Override
public long getItemId(int position) {
return logoIds.get(position);
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View gridView;
if (convertView == null) {
LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
gridView = inflater.inflate(R.layout.grid_item, null);
} else {
gridView = convertView;
}
/*TextView title = (TextView) gridView.findViewById(R.id.siteNameTV);
title.setText("Title_" + position);*/
ImageView logoImage = (ImageView) gridView.findViewById(R.id.logoImageView);
logoImage.setImageResource(logoIds.get(position));
return gridView;
}
}
10-05 15:06:55.458 32557-32557/pmp.com.instapukkei W/FragmentManager: moveToState: Fragment state for Classified{3fc90a #0 id=0x7f0c006d android:switcher:2131492973:1} not updated inline; expected state 3 found 2
10-05 15:06:57.907 32557-32557/pmp.com.instapukkei W/FragmentManager: moveToState: Fragment state for Tourism{33f7512 #2 id=0x7f0c006d android:switcher:2131492973:2} not updated inline; expected state 3 found 2
10-05 15:06:59.856 32557-32557/pmp.com.instapukkei W/FragmentManager: moveToState: Fragment state for Shopping{6a52599 #3 id=0x7f0c006d android:switcher:2131492973:3} not updated inline; expected state 3 found 2
10-05 15:07:02.252 32557-32557/pmp.com.instapukkei W/FragmentManager: moveToState: Fragment state for Travel{26da709 #4 id=0x7f0c006d android:switcher:2131492973:4} not updated inline; expected state 3 found 2
10-05 15:07:02.387 32557-32568/pmp.com.instapukkei I/art: Clamp target GC heap from 102MB to 96MB
10-05 15:07:07.410 32557-32557/pmp.com.instapukkei W/FragmentManager: moveToState: Fragment state for Tourism{33f7512 #2 id=0x7f0c006d android:switcher:2131492973:2} not updated inline; expected state 3 found 2
10-05 15:07:08.494 32557-32557/pmp.com.instapukkei I/art: Waiting for a blocking GC Alloc
10-05 15:07:08.501 32557-32568/pmp.com.instapukkei I/art: Clamp target GC heap from 103MB to 96MB
10-05 15:07:08.502 32557-32557/pmp.com.instapukkei I/art: WaitForGcToComplete blocked for 8.292ms for cause Alloc
10-05 15:07:08.502 32557-32557/pmp.com.instapukkei I/art: Starting a blocking GC Alloc
10-05 15:07:11.500 32557-32557/pmp.com.instapukkei W/FragmentManager: moveToState: Fragment state for Tourism{33f7512 #2 id=0x7f0c006d android:switcher:2131492973:2} not updated inline; expected state 3 found 2
10-05 15:07:12.775 32557-32557/pmp.com.instapukkei I/art: Starting a blocking GC Alloc
10-05 15:07:12.775 32557-32557/pmp.com.instapukkei I/art: Starting a blocking GC Alloc
10-05 15:07:12.802 32557-32557/pmp.com.instapukkei I/art: Alloc sticky concurrent mark sweep GC freed 481(18KB) AllocSpace objects, 3(3MB) LOS objects, 4% free, 91MB/96MB, paused 465us total 26.676ms
10-05 15:07:12.906 32557-32557/pmp.com.instapukkei I/art: Starting a blocking GC Alloc
10-05 15:07:12.906 32557-32557/pmp.com.instapukkei I/art: Starting a blocking GC Alloc
10-05 15:07:12.917 32557-32557/pmp.com.instapukkei I/art: Clamp target GC heap from 103MB to 96MB
10-05 15:07:12.917 32557-32557/pmp.com.instapukkei I/art: Alloc partial concurrent mark sweep GC freed 840(64KB) AllocSpace objects, 5(7MB) LOS objects, 8% free, 87MB/96MB, paused 599us total 10.801ms
10-05 15:07:14.432 32557-32564/pmp.com.instapukkei I/art: Debugger is no longer active
10-05 15:07:15.214 32557-32557/pmp.com.instapukkei I/art: Starting a blocking GC Alloc
10-05 15:07:15.214 32557-32557/pmp.com.instapukkei I/art: Starting a blocking GC Alloc
10-05 15:07:15.225 32557-32557/pmp.com.instapukkei I/art: Alloc sticky concurrent mark sweep GC freed 250(8KB) AllocSpace objects, 0(0B) LOS objects, 3% free, 92MB/96MB, paused 803us total 10.646ms
10-05 15:07:15.226 32557-32557/pmp.com.instapukkei I/art: Starting a blocking GC Alloc
10-05 15:07:15.237 32557-32557/pmp.com.instapukkei I/art: Clamp target GC heap from 102MB to 96MB
10-05 15:07:15.238 32557-32557/pmp.com.instapukkei I/art: Alloc partial concurrent mark sweep GC freed 727(59KB) AllocSpace objects, 4(6MB) LOS objects, 10% free, 86MB/96MB, paused 467us total 11.147ms
10-05 15:07:15.318 32557-32557/pmp.com.instapukkei I/art: Starting a blocking GC Alloc
10-05 15:07:15.318 32557-32557/pmp.com.instapukkei I/art: Starting a blocking GC Alloc
10-05 15:07:15.323 32557-32557/pmp.com.instapukkei I/art: Starting a blocking GC Alloc
10-05 15:07:15.331 32557-32557/pmp.com.instapukkei I/art: Clamp target GC heap from 109MB to 96MB
10-05 15:07:15.331 32557-32557/pmp.com.instapukkei I/art: Alloc partial concurrent mark sweep GC freed 592(58KB) AllocSpace objects, 0(0B) LOS objects, 2% free, 93MB/96MB, paused 441us total 7.585ms
10-05 15:07:15.331 32557-32557/pmp.com.instapukkei I/art: Starting a blocking GC Alloc
10-05 15:07:15.346 32557-32557/pmp.com.instapukkei I/art: Clamp target GC heap from 109MB to 96MB
10-05 15:07:15.347 32557-32557/pmp.com.instapukkei I/art: Alloc concurrent mark sweep GC freed 10(12KB) AllocSpace objects, 0(0B) LOS objects, 2% free, 93MB/96MB, paused 408us total 14.839ms
10-05 15:07:15.347 32557-32557/pmp.com.instapukkei I/art: Forcing collection of SoftReferences for 3MB allocation
10-05 15:07:15.347 32557-32557/pmp.com.instapukkei I/art: Starting a blocking GC Alloc
10-05 15:07:15.366 32557-32557/pmp.com.instapukkei I/art: Clamp target GC heap from 109MB to 96MB
10-05 15:07:15.366 32557-32557/pmp.com.instapukkei I/art: Alloc concurrent mark sweep GC freed 11(344B) AllocSpace objects, 0(0B) LOS objects, 2% free, 93MB/96MB, paused 459us total 18.639ms
10-05 15:07:15.366 32557-32557/pmp.com.instapukkei W/art: Throwing OutOfMemoryError "Failed to allocate a 3686412 byte allocation with 2923072 free bytes and 2MB until OOM"
10-05 15:07:15.376 32557-32557/pmp.com.instapukkei I/art: Starting a blocking GC Alloc
10-05 15:07:15.376 32557-32557/pmp.com.instapukkei I/art: Starting a blocking GC Alloc
10-05 15:07:15.381 32557-32557/pmp.com.instapukkei I/art: Starting a blocking GC Alloc
10-05 15:07:15.390 32557-32557/pmp.com.instapukkei I/art: Clamp target GC heap from 109MB to 96MB
10-05 15:07:15.390 32557-32557/pmp.com.instapukkei I/art: Alloc partial concurrent mark sweep GC freed 6(192B) AllocSpace objects, 0(0B) LOS objects, 2% free, 93MB/96MB, paused 430us total 8.601ms
10-05 15:07:15.390 32557-32557/pmp.com.instapukkei I/art: Starting a blocking GC Alloc
10-05 15:07:15.405 32557-32557/pmp.com.instapukkei I/art: Clamp target GC heap from 109MB to 96MB
10-05 15:07:15.406 32557-32557/pmp.com.instapukkei I/art: Alloc concurrent mark sweep GC freed 3(96B) AllocSpace objects, 0(0B) LOS objects, 2% free, 93MB/96MB, paused 435us total 14.874ms
10-05 15:07:15.406 32557-32557/pmp.com.instapukkei I/art: Forcing collection of SoftReferences for 3MB allocation
10-05 15:07:15.406 32557-32557/pmp.com.instapukkei I/art: Starting a blocking GC Alloc
10-05 15:07:15.422 32557-32557/pmp.com.instapukkei I/art: Clamp target GC heap from 109MB to 96MB
10-05 15:07:15.422 32557-32557/pmp.com.instapukkei I/art: Alloc concurrent mark sweep GC freed 3(96B) AllocSpace objects, 0(0B) LOS objects, 2% free, 93MB/96MB, paused 420us total 15.551ms
10-05 15:07:15.422 32557-32557/pmp.com.instapukkei W/art: Throwing OutOfMemoryError "Failed to allocate a 3686412 byte allocation with 2916528 free bytes and 2MB until OOM"
10-05 15:07:15.423 32557-32557/pmp.com.instapukkei D/skia: --- allocation failed for scaled bitmap
10-05 15:07:15.423 32557-32557/pmp.com.instapukkei D/AndroidRuntime: Shutting down VM
10-05 15:07:15.453 32557-32557/pmp.com.instapukkei E/AndroidRuntime: FATAL EXCEPTION: main
Process: pmp.com.instapukkei, PID: 32557
java.lang.OutOfMemoryError: Failed to allocate a 3686412 byte allocation with 2916528 free bytes and 2MB until OOM
at dalvik.system.VMRuntime.newNonMovableArray(Native Method)
at android.graphics.BitmapFactory.nativeDecodeAsset(Native Method)
at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:609)
at android.graphics.BitmapFactory.decodeResourceStream(BitmapFactory.java:444)
at android.graphics.drawable.Drawable.createFromResourceStream(Drawable.java:1080)
at android.content.res.Resources.loadDrawableForCookie(Resources.java:2638)
at android.content.res.Resources.loadDrawable(Resources.java:2543)
at android.content.res.TypedArray.getDrawable(TypedArray.java:870)
at android.graphics.drawable.AnimationDrawable.inflateChildElements(AnimationDrawable.java:330)
at android.graphics.drawable.AnimationDrawable.inflate(AnimationDrawable.java:300)
at android.graphics.drawable.Drawable.createFromXmlInner(Drawable.java:1215)
at android.graphics.drawable.Drawable.createFromXml(Drawable.java:1124)
at android.content.res.Resources.loadDrawableForCookie(Resources.java:2633)
at android.content.res.Resources.loadDrawable(Resources.java:2543)
at android.content.res.TypedArray.getDrawable(TypedArray.java:870)
at android.view.View.<init>(View.java:3957)
at android.widget.ImageView.<init>(ImageView.java:155)
at android.widget.ImageView.<init>(ImageView.java:150)
at android.support.v7.widget.AppCompatImageView.<init>(AppCompatImageView.java:57)
at android.support.v7.widget.AppCompatImageView.<init>(AppCompatImageView.java:53)
at android.support.v7.app.AppCompatViewInflater.createView(AppCompatViewInflater.java:106)
at android.support.v7.app.AppCompatDelegateImplV7.createView(AppCompatDelegateImplV7.java:972)
at android.support.v7.app.AppCompatDelegateImplV7.onCreateView(AppCompatDelegateImplV7.java:1031)
at android.support.v4.view.LayoutInflaterCompatHC$FactoryWrapperHC.onCreateView(LayoutInflaterCompatHC.java:44)
at android.view.LayoutInflater$FactoryMerger.onCreateView(LayoutInflater.java:189)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:746)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:704)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:835)
at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:798)
at android.view.LayoutInflater.inflate(LayoutInflater.java:515)
at android.view.LayoutInflater.inflate(LayoutInflater.java:423)
at pmp.com.instapukkei.tabs.Tourism.onCreateView(Tourism.java:31)
at android.support.v4.app.Fragment.performCreateView(Fragment.java:1974)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1067)
at android.support.v4.app.FragmentManagerImpl.attachFragment(FragmentManager.java:1430)
at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:728)
at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1617)
at android.support.v4.app.FragmentManagerImpl.executePendingTransactions(FragmentManager.java:570)
at android.support.v4.app.FragmentPagerAdapter.finishUpdate(FragmentPagerAdapter.java:141)
at android.support.v4.view.ViewPager.populate(ViewPager.java:1177)
at android.support.v4.view.ViewPager.populate(ViewPager.java:1025)
at android.support.v4.view.ViewPager$3.run(ViewPager.java:254)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:858)
at android.view.Choreographer.doCallbacks(Choreographer.java:670)
at android.view.Choreographer.doFrame(Choreographer.java:603)
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:844)
at android.os.Handler.handleCallback(Handler.java:746)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5443)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:728)
at com.andr
<application
........................
android:largeHeap="true">
Glide.with(convertView.getContext())
.load(R.id.resource_id)
.into(imageView);
<application
....
android:largeHeap="true">