Sunday, May 11, 2014

[android-developers] Re: Activity Back Stack and OutOfMemoryError

Android has this particular annoying and weird behavior: Once the heap inflates to a certain size, no matter how much of it is actually used, you can no longer allocate files that are larger than the remaining memory.
my guess, you're there.

you should make sure your previous activities use as little memory as possible and make it a habit of unloading memory which might not be necessary once activities are changed.  This is especially true in apps that store large bitmaps and even more noticeable if you also have lots of small objects (memory fragmentation + large bitmaps = OOM exceptions)


On Thursday, May 8, 2014 5:47:06 PM UTC+3, Daniel Rindt wrote:
Hello,

in the application we open a chooser for selecting photos. I got frequently crashes mostly from sony by doing this which says: OutOfMemoryError which raises by showing the bitmaps. The stacktrace which the
system creates doesn't mention a class of our code which confuses me a bit.
My assumption is that our app can open lots of activities and by opening the image choose there is not much space left and the crash happen. So far i read i shouldn't care about do finish(); and activity they
can remain in the activity backstack. It would be great to get a bit more clued.
Here is the stacktrace i got:

Package: com.viselabs.aquariummanager  Version Code: 34  Version Name: 0.16.34.g3cc9d12  Android: 4.3  Manufacturer: samsung  Model: SPH-L710  Date: Thu May 08 09:13:04 EDT 2014    java.lang.RuntimeException: Unable to start activity ComponentInfo{android/com.android.internal.app.ChooserActivity}: android.view.InflateException: Binary XML file line #26: Error inflating class <unknown>  	at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2305)  	at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2359)  	at android.app.ActivityThread.access$700(ActivityThread.java:165)  	at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1326)  	at android.os.Handler.dispatchMessage(Handler.java:99)  	at android.os.Looper.loop(Looper.java:137)  	at android.app.ActivityThread.main(ActivityThread.java:5455)  	at java.lang.reflect.Method.invokeNative(Native Method)  	at java.lang.reflect.Method.invoke(Method.java:525)  	at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1187)  	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1003)  	at dalvik.system.NativeStart.main(Native Method)  Caused by: android.view.InflateException: Binary XML file line #26: Error inflating class <unknown>  	at android.view.LayoutInflater.createView(LayoutInflater.java:626)  	at com.android.internal.policy.impl.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:56)  	at android.view.LayoutInflater.onCreateView(LayoutInflater.java:675)  	at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:700)  	at android.view.LayoutInflater.rInflate(LayoutInflater.java:761)  	at android.view.LayoutInflater.rInflate(LayoutInflater.java:769)  	at android.view.LayoutInflater.inflate(LayoutInflater.java:498)  	at android.view.LayoutInflater.inflate(LayoutInflater.java:398)  	at android.view.LayoutInflater.inflate(LayoutInflater.java:354)  	at com.android.internal.app.ResolverActivity.onCreate(ResolverActivity.java:210)  	at com.android.internal.app.ChooserActivity.onCreate(ChooserActivity.java:69)  	at android.app.Activity.performCreate(Activity.java:5372)  	at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1104)  	at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2267)  	... 11 more  Caused by: java.lang.reflect.InvocationTargetException  	at java.lang.reflect.Constructor.constructNative(Native Method)  	at java.lang.reflect.Constructor.newInstance(Constructor.java:417)  	at android.view.LayoutInflater.createView(LayoutInflater.java:600)  	... 24 more  Caused by: java.lang.OutOfMemoryError  	at android.graphics.BitmapFactory.nativeDecodeAsset(Native Method)  	at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:596)  	at android.graphics.BitmapFactory.decodeResourceStream(BitmapFactory.java:444)  	at android.graphics.drawable.Drawable.createFromResourceStream(Drawable.java:832)  	at android.content.res.Resources.loadDrawable(Resources.java:2988)  	at android.content.res.Resources.getDrawable(Resources.java:1558)  	at android.widget.EdgeEffect.<init>(EdgeEffect.java:148)  	at android.widget.AbsListView.setOverScrollMode(AbsListView.java:1220)  	at android.view.View.<init>(View.java:3458)  	at android.view.View.<init>(View.java:3528)  	at android.view.ViewGroup.<init>(ViewGroup.java:475)  	at android.widget.AdapterView.<init>(AdapterView.java:236)  	at android.widget.AbsListView.<init>(AbsListView.java:1105)  	at android.widget.GridView.<init>(GridView.java:110)  	at android.widget.GridView.<init>(GridView.java:106)  	... 27 more  
It would be nice to get some information about what are you think about.
Thank you for your attention and support.
Daniel

--
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to android-developers@googlegroups.com
To unsubscribe from this group, send email to
android-developers+unsubscribe@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en
---
You received this message because you are subscribed to the Google Groups "Android Developers" group.
To unsubscribe from this group and stop receiving emails from it, send an email to android-developers+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

No comments:

Post a Comment