Hey Androiders!

I'm running into a strange intermittent issue with my app.. Basically
every time the app resumes I check if its internal data [fetched from
a Web API] is outdated and if it is I push off to my Splash/Loader
activity while I fetch new data. This works great ALMOST all the
time... Then every once in a while the system gives me a
java.lang.RuntimeException < android.view.InflateException <
java.lang.reflect.InvocationTargetException <
java.lang.OutOfMemoryError [that's the simplified stack trace]..

Here is the whole stack trace:

E/dalvikvm-heap(12914): Heap Massage needed (4500000-byte external
allocation too big)
E/dalvikvm-heap(12914): Full GC (don't collect SoftReferences)
I/ActivityManager( 1078): Process com.amazon.mp3 (pid 12917) has died.
D/dalvikvm(12914): GC freed 188 objects / 10224 bytes in 54ms
E/dalvikvm-heap(12914): Full GC (collect SoftReferences)
D/dalvikvm(12914): GC freed 47 objects / 1968 bytes in 56ms
E/dalvikvm-heap(12914): Try and trim Heap Source
E/dalvikvm-heap(12914): Heap Massage was unsuccessful for 4500000-
bytes!
E/dalvikvm-heap(12914): Heap Massage has failed...
E/        (12914): VM won't let us allocate 4500000 bytes
D/AndroidRuntime(12914): Shutting down VM
W/dalvikvm(12914): threadid=3: thread exiting with uncaught exception
(group=0x4001b178)
E/AndroidRuntime(12914): Uncaught handler: thread main exiting due to
uncaught exception
E/AndroidRuntime(12914): java.lang.RuntimeException: Unable to start
activity ComponentInfo{com.apwit.grubtruck/
com.apwit.grubtruck.Splash}: android.view.InflateException: Binary XML
file line #8: Error inflating class <unknown>
E/AndroidRuntime(12914):        at
android.app.ActivityThread.performLaunchActivity(ActivityThread.java:
2496)
E/AndroidRuntime(12914):        at
android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:
2512)
E/AndroidRuntime(12914):        at android.app.ActivityThread.access
$2200(ActivityThread.java:119)
E/AndroidRuntime(12914):        at android.app.ActivityThread
$H.handleMessage(ActivityThread.java:1863)
E/AndroidRuntime(12914):        at
android.os.Handler.dispatchMessage(Handler.java:99)
E/AndroidRuntime(12914):        at android.os.Looper.loop(Looper.java:123)
E/AndroidRuntime(12914):        at
android.app.ActivityThread.main(ActivityThread.java:4363)
E/AndroidRuntime(12914):        at
java.lang.reflect.Method.invokeNative(Native Method)
E/AndroidRuntime(12914):        at
java.lang.reflect.Method.invoke(Method.java:521)
E/AndroidRuntime(12914):        at com.android.internal.os.ZygoteInit
$MethodAndArgsCaller.run(ZygoteInit.java:860)
E/AndroidRuntime(12914):        at
com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
E/AndroidRuntime(12914):        at dalvik.system.NativeStart.main(Native
Method)
E/AndroidRuntime(12914): Caused by: android.view.InflateException:
Binary XML file line #8: Error inflating class <unknown>
E/AndroidRuntime(12914):        at
android.view.LayoutInflater.createView(LayoutInflater.java:513)
E/AndroidRuntime(12914):        at
com.android.internal.policy.impl.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:
56)
E/AndroidRuntime(12914):        at
android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:563)
E/AndroidRuntime(12914):        at
android.view.LayoutInflater.rInflate(LayoutInflater.java:618)
E/AndroidRuntime(12914):        at
android.view.LayoutInflater.inflate(LayoutInflater.java:407)
E/AndroidRuntime(12914):        at
android.view.LayoutInflater.inflate(LayoutInflater.java:320)
E/AndroidRuntime(12914):        at
android.view.LayoutInflater.inflate(LayoutInflater.java:276)
E/AndroidRuntime(12914):        at
com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:
198)
E/AndroidRuntime(12914):        at
android.app.Activity.setContentView(Activity.java:1622)
E/AndroidRuntime(12914):        at
com.apwit.grubtruck.Splash.onCreate(Splash.java:45)
E/AndroidRuntime(12914):        at
android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:
1047)
E/AndroidRuntime(12914):        at
android.app.ActivityThread.performLaunchActivity(ActivityThread.java:
2459)
E/AndroidRuntime(12914):        ... 11 more
E/AndroidRuntime(12914): Caused by:
java.lang.reflect.InvocationTargetException
E/AndroidRuntime(12914):        at
android.widget.ImageView.<init>(ImageView.java:105)
E/AndroidRuntime(12914):        at
java.lang.reflect.Constructor.constructNative(Native Method)
E/AndroidRuntime(12914):        at
java.lang.reflect.Constructor.newInstance(Constructor.java:446)
E/AndroidRuntime(12914):        at
android.view.LayoutInflater.createView(LayoutInflater.java:500)
E/AndroidRuntime(12914):        ... 22 more
E/AndroidRuntime(12914): Caused by: java.lang.OutOfMemoryError: bitmap
size exceeds VM budget
E/AndroidRuntime(12914):        at
android.graphics.Bitmap.nativeCreate(Native Method)
E/AndroidRuntime(12914):        at
android.graphics.Bitmap.createBitmap(Bitmap.java:468)
E/AndroidRuntime(12914):        at
android.graphics.Bitmap.createBitmap(Bitmap.java:435)
E/AndroidRuntime(12914):        at
android.graphics.Bitmap.createScaledBitmap(Bitmap.java:340)
E/AndroidRuntime(12914):        at
android.graphics.BitmapFactory.finishDecode(BitmapFactory.java:488)
E/AndroidRuntime(12914):        at
android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:462)
E/AndroidRuntime(12914):        at
android.graphics.BitmapFactory.decodeResourceStream(BitmapFactory.java:
323)
E/AndroidRuntime(12914):        at
android.graphics.drawable.Drawable.createFromResourceStream(Drawable.java:
697)
E/AndroidRuntime(12914):        at
android.content.res.Resources.loadDrawable(Resources.java:1705)
E/AndroidRuntime(12914):        at
android.content.res.TypedArray.getDrawable(TypedArray.java:548)
E/AndroidRuntime(12914):        at
android.widget.ImageView.<init>(ImageView.java:115)
E/AndroidRuntime(12914):        ... 26 more



So up there towards the top I see: E/        (12914): VM won't let us
allocate 4500000 bytes

But why on earth does the system need to allocate 4.5MB just to
display a real simple XML view that loads up two small enough drawable
resources [one is 66KB and the other 135KB].. I'm also using an
animation+interpolator to rotate the 66KB loading spinner image.

The only error in that stack trace that comes from my package is line
2 of my Splash/Loader's onCreate:
setContentView(R.layout.splash);

So then I go and analyze my XML layout file splash.xml, and in the
stack it also tells us: android.view.InflateException: Binary XML file
line #8: Error inflating class <unknown> -- so I look at line 8 of
splash.xml and that is the first line of my <ImageView/> element that
loads up the 135KB.. Here is my XML file:

<?xml version="1.0" encoding="UTF-8"?>

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/
android"
            android:orientation="vertical"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent">

        <ImageView android:id="@+id/splash_graphic"
                        android:layout_width="fill_parent"
                        android:layout_height="fill_parent"
                        android:scaleType="centerCrop"
                        android:src="@drawable/grub_truck_splash" />

        <LinearLayout
                android:id="@+id/splash_loader_container"
                android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentBottom="true"
            android:layout_centerHorizontal="true"
            android:paddingBottom="80dip"
            >
                <ImageView
                        android:id="@+id/splash_loader"
                                android:src="@drawable/greenloader"
                                android:layout_width="wrap_content"
                                android:layout_height="wrap_content"
                                />

        </LinearLayout>

        <LinearLayout
                android:id="@+id/msg_updating_container"
                android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentBottom="true"
            android:layout_centerHorizontal="true"
            android:paddingBottom="35dip"
            >
                <TextView
                        android:id="@+id/msg_updating"
                                android:layout_width="wrap_content"
                                android:layout_height="wrap_content"
                                android:text="@string/splash_msg_updating"
                                android:textColor="#333"
                                android:textStyle="bold"
                                />

        </LinearLayout>

</RelativeLayout>


Sorry to be pasting in so many lines... I'm just thinking they may be
necessary to debug this problem..

What's weird to me is that this activity works most of the time.. And
in the cases that it does crash on an out of memory error like above,
it's not like I'm running any heavy apps before trying to resume my
app.... I also don't believe I've ever launched the Amazon MP3 app yet
above the stack trace in the above log, it frees up Amazon MP3's
resources.....

Strange...

Thanks for any help!!

-Nick

-- 
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en

To unsubscribe, reply using "remove me" as the subject.

Reply via email to