What are the type and size in pixels of your drawable ? As I understand it, Android uncompress jpegs to raw bytes when decoding images.
Say if your Image is a big(huge ?) and highly compressed JPEG, then possibly you could run into an OOM. Just an hypothesis, Although exactly 4500000-byte sounds weird :s If this is the case, you can either reduce your drawable size or load it programmatically instead of via XML and then use BitmapFactory.Options.inSampleSize or inTempStorage : http://developer.android.com/intl/de/reference/android/graphics/BitmapFactory.Options.html Yahel On 6 avr, 07:47, patbenatar <[email protected]> wrote: > 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(PhoneLayo > utInflater.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.jav a: > 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.

