Android Out of Memory at setContentView
<p>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.</p>

<p>I'm changing between Activities with this code:</p>

<pre><code>Intent myIntent = new Intent(Step3.this, Step6.class); 
Step3.this.startActivity(myIntent); 
System.gc();
</code></pre>

<p>This is the log:</p>

<pre><code>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 &lt;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 &lt;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.&lt;init&gt;(ImageView.java:120)
03-05 12:39:43.960: I/dalvikvm(22184):   at android.widget.ImageView.&lt;init&gt;(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 &lt;1K, 5% free 15714K/16519K, paused 3ms+1ms, total 14ms
</code></pre>

<p>EDIT: 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.</p>
