Android的内存在的setContentView [英] Android Out of Memory at setContentView

查看:187
本文介绍了Android的内存在的setContentView的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我做了一个全屏幕的点击应用程序,有6个屏幕。该应用程序从屏幕后,点击进入。每个屏幕都有自己的活动(第一步,第二步,第三步等,直到第6步)。没有什么复杂的,布局很简单,只有一个背景图像和一个按钮preSS。我得到约3屏幕的问题时开始,突然下一个屏幕不会出现,但应用程序崩溃在内存不足的错误。我试着移动到屏幕4,5,6,没有运气,但如果我搬回从屏幕3屏幕说2,那么它的作品!泄漏的东西,但我不知道是什么。背景图像是小的。

I've made a full screen click-through app that has 6 screens. The app goes from screen upon a click. Each screen has it's own activity (Step1, Step2, Step3 etc until Step 6). Nothing complicated, layouts are very simple, only a background image and a button to press. I get to about screen 3 when problems start, suddenly the next screen will not show up but the app crashes in out of memory error. I've tried moving to screens 4, 5, 6, no luck, but if I move back to say screen 2 from screen 3, then it works! Something leaks, but I don't know what. The background images are small.

我的活动改变这个code:

I'm changing between Activities with this code:

Intent myIntent = new Intent(Step3.this, Step6.class); 
Step3.this.startActivity(myIntent); 
System.gc();

这是日志:

03-05 12:38:44.090: D/dalvikvm(22184): WAIT_FOR_CONCURRENT_GC blocked 0ms
03-05 12:38:44.115: D/dalvikvm(22184): GC_EXPLICIT freed 3622K, 8% free 55598K/59911K, paused 1ms+3ms, total 22ms
03-05 12:39:33.965: D/dalvikvm(22184): WAIT_FOR_CONCURRENT_GC blocked 0ms
03-05 12:39:34.040: D/dalvikvm(22184): GC_EXPLICIT freed 31K, 8% free 55633K/59911K, paused 11ms+5ms, total 74ms
03-05 12:39:34.040: I/Choreographer(22184): Skipped 2910 frames!  The application may be doing too much work on its main thread.
03-05 12:39:43.850: D/dalvikvm(22184): GC_FOR_ALLOC freed 34K, 8% free 55613K/59911K, paused 23ms, total 24ms
03-05 12:39:43.860: I/dalvikvm-heap(22184): Grow heap (frag case) to 58.364MB for 3686416-byte allocation
03-05 12:39:43.900: D/dalvikvm(22184): GC_CONCURRENT freed <1K, 7% free 59213K/63559K, paused 14ms+5ms, total 39ms
03-05 12:39:43.935: D/dalvikvm(22184): GC_FOR_ALLOC freed 0K, 7% free 59213K/63559K, paused 18ms, total 18ms
03-05 12:39:43.935: I/dalvikvm-heap(22184): Forcing collection of SoftReferences for 14745616-byte allocation
03-05 12:39:43.955: D/dalvikvm(22184): GC_BEFORE_OOM freed <1K, 7% free 59213K/63559K, paused 18ms, total 19ms
03-05 12:39:43.955: E/dalvikvm-heap(22184): Out of memory on a 14745616-byte allocation.
03-05 12:39:43.955: I/dalvikvm(22184): "main" prio=5 tid=1 RUNNABLE
03-05 12:39:43.955: I/dalvikvm(22184):   | group="main" sCount=0 dsCount=0 obj=0x413f0508 self=0x413e0468
03-05 12:39:43.955: I/dalvikvm(22184):   | sysTid=22184 nice=0 sched=0/0 cgrp=apps handle=1074609968
03-05 12:39:43.955: I/dalvikvm(22184):   | schedstat=( 1501533493 98715963 900 ) utm=116 stm=33 core=3
03-05 12:39:43.955: I/dalvikvm(22184):   at android.graphics.BitmapFactory.nativeDecodeAsset(Native Method)
03-05 12:39:43.955: I/dalvikvm(22184):   at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:623)
03-05 12:39:43.955: I/dalvikvm(22184):   at android.graphics.BitmapFactory.decodeResourceStream(BitmapFactory.java:476)
03-05 12:39:43.955: I/dalvikvm(22184):   at android.graphics.drawable.Drawable.createFromResourceStream(Drawable.java:781)
03-05 12:39:43.955: I/dalvikvm(22184):   at android.content.res.Resources.loadDrawable(Resources.java:1963)
03-05 12:39:43.955: I/dalvikvm(22184):   at android.content.res.TypedArray.getDrawable(TypedArray.java:601)
03-05 12:39:43.955: I/dalvikvm(22184):   at android.widget.ImageView.<init>(ImageView.java:120)
03-05 12:39:43.960: I/dalvikvm(22184):   at android.widget.ImageView.<init>(ImageView.java:110)
03-05 12:39:43.960: I/dalvikvm(22184):   at java.lang.reflect.Constructor.constructNative(Native Method)
03-05 12:39:43.960: I/dalvikvm(22184):   at java.lang.reflect.Constructor.newInstance(Constructor.java:417)
03-05 12:39:43.960: I/dalvikvm(22184):   at android.view.LayoutInflater.createView(LayoutInflater.java:587)
03-05 12:39:43.960: I/dalvikvm(22184):   at com.android.internal.policy.impl.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:56)
03-05 12:39:43.960: I/dalvikvm(22184):   at android.view.LayoutInflater.onCreateView(LayoutInflater.java:660)
03-05 12:39:43.960: I/dalvikvm(22184):   at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:685)
03-05 12:39:43.960: I/dalvikvm(22184):   at android.view.LayoutInflater.rInflate(LayoutInflater.java:746)
03-05 12:39:43.960: I/dalvikvm(22184):   at android.view.LayoutInflater.inflate(LayoutInflater.java:489)
03-05 12:39:43.960: I/dalvikvm(22184):   at android.view.LayoutInflater.inflate(LayoutInflater.java:396)
03-05 12:39:43.960: I/dalvikvm(22184):   at android.view.LayoutInflater.inflate(LayoutInflater.java:352)
03-05 12:39:43.960: I/dalvikvm(22184):   at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:308)
03-05 12:39:43.960: I/dalvikvm(22184):   at android.app.Activity.setContentView(Activity.java:1924)
03-05 12:39:43.960: I/dalvikvm(22184):   at com.frogr4g.networktrial.Step6.onCreate(Step6.java:11)
03-05 12:39:43.960: I/dalvikvm(22184):   at android.app.Activity.performCreate(Activity.java:5206)
03-05 12:39:43.960: I/dalvikvm(22184):   at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1083)
03-05 12:39:43.960: I/dalvikvm(22184):   at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2064)
03-05 12:39:43.960: I/dalvikvm(22184):   at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2125)
03-05 12:39:43.960: I/dalvikvm(22184):   at android.app.ActivityThread.access$600(ActivityThread.java:140)
03-05 12:39:43.960: I/dalvikvm(22184):   at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1227)
03-05 12:39:43.960: I/dalvikvm(22184):   at android.os.Handler.dispatchMessage(Handler.java:99)
03-05 12:39:43.960: I/dalvikvm(22184):   at android.os.Looper.loop(Looper.java:137)
03-05 12:39:43.960: I/dalvikvm(22184):   at android.app.ActivityThread.main(ActivityThread.java:4898)
03-05 12:39:43.960: I/dalvikvm(22184):   at java.lang.reflect.Method.invokeNative(Native Method)
03-05 12:39:43.960: I/dalvikvm(22184):   at java.lang.reflect.Method.invoke(Method.java:511)
03-05 12:39:43.960: I/dalvikvm(22184):   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1006)
03-05 12:39:43.960: I/dalvikvm(22184):   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:773)
03-05 12:39:43.960: I/dalvikvm(22184):   at dalvik.system.NativeStart.main(Native Method)
03-05 12:39:43.960: A/libc(22184): Fatal signal 11 (SIGSEGV) at 0x00000000 (code=1), thread 22184 (4g.networktrial)
03-05 12:39:57.150: D/dalvikvm(22766): GC_FOR_ALLOC freed 64K, 6% free 12115K/12867K, paused 34ms, total 35ms
03-05 12:39:57.155: I/dalvikvm-heap(22766): Grow heap (frag case) to 15.883MB for 3686416-byte allocation
03-05 12:39:57.170: D/dalvikvm(22766): GC_CONCURRENT freed <1K, 5% free 15714K/16519K, paused 3ms+1ms, total 14ms

编辑:我创建了六个屏幕类似的应用程序,只需用的TextView和一个按钮和一个导航链(1 - > 2 - > 3 - > 4 - > 5 - > 6 - > 1 )没有任何图像,它就像黄油。 (如预期)。所以它肯定是与图像占用了大量内存。

I created a similar app of six screens, just with textview and a button and a navigation chain (1 --> 2 --> 3 --> 4 --> 5 --> 6 --> 1) without any images, and it works like butter. (as expected). So it's definitely something to do with the images taking up lots of memory.

推荐答案

有几件事情来看待。


  • 你有几个密度提供的背景图像(S)?缩放有时也消耗了大量的内存。

  • 请您使用 startActivity startActivityForResult()?在后一种情况下,较旧的活动对象可以不被破坏。

  • 请您收集在应用程序信息类?

  • Have you provided the background image(s) for several densities? Scaling is sometimes consuming a lot of memory.
  • Do you use startActivity or startActivityForResult()? In the latter case, your older Activity objects cannot be destroyed.
  • Do you collect information in the Application class?

这篇关于Android的内存在的setContentView的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆