IMHO, if the device offers 50% more memory per application, but the 
bitmaps take up more than 50% more memory, then the net effect is a 
stricter limitation.

i'm seeing some occasional OOMs only on Droid, and so i'm being extra 
careful about recycling bitmaps and all that.


At 5:40 PM -0800 12/2/09, Romain Guy wrote:
>The new device does not have stricter limitations since it gives apps
>more RAM (24 MB instead of 16 MB.)
>
>On Wed, Dec 2, 2009 at 5:29 PM, Matt Kanninen <mathias...@gmail.com> wrote:
>>  What did I do wrong?  I worked within the defined limitations, then a
>>  new handset came out with stricter limitations.
>>
>>  I'm kind of confused how you can blame me!
>>
>>  On Dec 2, 5:19 pm, Romain Guy <romain...@android.com> wrote:
>>>  The Droid has more pixels and a high display density, therefore
>>>  bitmaps are scaled and require more memory. If your app is running out
>>>  of memory, do not blame it on the framework and "poorer performance,"
>>>  blame it on your app for doing the wrong thing and abusing the Java
>>>  heap.
>>>
>>>
>>>
>>>  > The app worked great on the G1.  I've clearly hit a case where the
>>>  > framework made some decisions that result in poorer performance on the
>>>  > Droid.
>>>
>>>  > The bitmap out of memory errors can still occur on any setLayout(res/
>>>  > xml/id), after running the app for 5-30 mins.  But I did fix the
>>>  > bitmap out of memory crash that occured during
>>>
>>>  > glow.setBackgroundResource(glowDrawableIds[scale]);
>>>
>>>  > We just don't set a new background resource anymore.
>>>
>>>  > I had 10 animation frames, and the animation frame chosen was based
>>>  > upon the volume coming from the mic.
>>>
>>>  > Now we take what was the last frame, and vary it's drawable's
>>>  > transparency depending on volume.
>>>
>>>  > glow.getBackground().setAlpha(alpha);
>>>
>>>  > I will now start creating additional res/xml/files, so that LESS
>>>  > complex layouts are used on the Verizon Motorola Droid with firmware
>>>  > 2.0 then we used on the G1.
>>>
>>>  > The layouts, and the final resulting screens were approved by
>>>  > management, so I will be trying hard not to change ANYTHING on the G1,
>>>  > while adding support for the inferior memory handling on the only
>>>  > Android 2.0 handset.  The one with better specs.
>>>
>>>  > Can anyone recommend which Android debugging tool I should be using to
>>>  > figure out what to optimize?
>>>
>>>  > On Nov 25, 11:11 am, Streets Of Boston <flyingdutc...@gmail.com>
>>>  > wrote:
>>>  >> As in the comment in your bug-report by Romain, you're using too much
>>>  >> memory.
>>>  >> Note that you only have 16MByte total available RAM for your process,
>>>  >> including your bitmaps.
>>>
>>>  >> - Only load the bitmaps that are absolutely necessary (especially when
>>>  >> they become quite large).
>>>  >> - Load the bitmaps scaled to the size of your screen, if possible. Use
>>>  >> BitmapFactory.decode and set the 'inSampleSize' of your bitmap-options
>  >> >> to scale down the size of the bitmap to be loaded and rendered on the
>>>  >> screen.
>>>
>>>  >> On Nov 25, 12:46 pm, MattKanninen<mathias...@gmail.com> wrote:
>>>
>>>  >> > <a href="http://code.google.com/p/android/issues/detail?id=5045";>Issue
>>>  >> > 5045</a>
>>>
>>>  >> >http://code.google.com/p/android/issues/detail?id=5045
>>>
>>>  >> > On Nov 25, 9:37 am, MattKanninen<mathias...@gmail.com> wrote:
>>>
>>>  >> > > This:
>>>  >> > >         private static final int[] glowDrawableIds={
>>>  >> > >                 R.drawable.graphic_microphoneglow_01,
>>>  >> > >                 R.drawable.graphic_microphoneglow_02,
>>>  >> > >                 R.drawable.graphic_microphoneglow_03,
>>>  >> > >                 R.drawable.graphic_microphoneglow_04,
>>>  >> > >                 R.drawable.graphic_microphoneglow_05,
>>>  >> > >                 R.drawable.graphic_microphoneglow_06,
>>>  >> > >                 R.drawable.graphic_microphoneglow_07,
>>>  >> > >                 R.drawable.graphic_microphoneglow_08,
>  >> >> > >                 R.drawable.graphic_microphoneglow_09,
>>>  >> > >                 R.drawable.graphic_microphoneglow_10
>  >> >> > >         };
>>>  >> > > ...
>>>  >> > > View glow = findViewById(R.id.glow);
>>>  >> > > ..
>>>
>>>  >> > > glow.setBackgroundResource(glowDrawableIds[scale]);
>>>
>>>  >> > > is causing
>>>
>>>  >> > > 11-25 09:21:02.046: WARN/UsageStats(1018): Failed to 
>>>persist new stats
>>>  >> > > 11-25 09:21:02.694: DEBUG/dalvikvm(2386): GC freed 298 
>>>objects / 15656
>>>  >> > > bytes in 61ms
>>>  >> > > 11-25 09:21:02.952: ERROR/dalvikvm-heap(2386): 1111680-byte external
>>>  >> > > allocation too large for this process.
>>>  >> > > 11-25 09:21:02.952: ERROR/(2386): VM won't let us allocate 1111680
>>>  >> > > bytes
>>>  >> > > 11-25 09:21:02.952: DEBUG/AndroidRuntime(2386): Shutting down VM
>>>  >> > > 11-25 09:21:02.952: WARN/dalvikvm(2386): threadid=3: thread exiting
>>>  >> > > with uncaught exception (group=0x4001b180)
>>>  >> > > 11-25 09:21:02.952: ERROR/AndroidRuntime(2386): Uncaught handler:
>>>  >> > > thread main exiting due to uncaught exception
>>>  >> > > 11-25 09:21:03.014: ERROR/AndroidRuntime(2386):
>>>  >> > > java.lang.OutOfMemoryError: bitmap size exceeds VM budget
>>>  >> > > 11-25 09:21:03.014: ERROR/AndroidRuntime(2386):     at
>>>  >> > > android.graphics.Bitmap.nativeCreate(Native Method)
>>>  >> > > 11-25 09:21:03.014: ERROR/AndroidRuntime(2386):     at
>>>  >> > > android.graphics.Bitmap.createBitmap(Bitmap.java:468)
>>>  >> > > 11-25 09:21:03.014: ERROR/AndroidRuntime(2386):     at
>>>  >> > > android.graphics.Bitmap.createBitmap(Bitmap.java:435)
>>>  >> > > 11-25 09:21:03.014: ERROR/AndroidRuntime(2386):     at
>>>  >> > > android.graphics.Bitmap.createScaledBitmap(Bitmap.java:340)
>>>  >> > > 11-25 09:21:03.014: ERROR/AndroidRuntime(2386):     at
>>>  >> > > android.graphics.BitmapFactory.finishDecode(BitmapFactory.java:488)
>>>  >> > > 11-25 09:21:03.014: ERROR/AndroidRuntime(2386):     at
>>>  >> > > android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:462)
>>>  >> > > 11-25 09:21:03.014: ERROR/AndroidRuntime(2386):     at
>>>  >> > > 
>>>android.graphics.BitmapFactory.decodeResourceStream(BitmapFactory.java:
>>>  >> > > 323)
>>>  >> > > 11-25 09:21:03.014: ERROR/AndroidRuntime(2386):     at
>>>  >> > > android.graphics.drawable.Drawable.createFromResourceStream
>>>  >> > > (Drawable.java:697)
>>>  >> > > 11-25 09:21:03.014: ERROR/AndroidRuntime(2386):     at
>>>  >> > > android.content.res.Resources.loadDrawable(Resources.java:1705)
>>>  >> > > 11-25 09:21:03.014: ERROR/AndroidRuntime(2386):     at
>>>  >> > > android.content.res.Resources.getDrawable(Resources.java:580)
>>>  >> > > 11-25 09:21:03.014: ERROR/AndroidRuntime(2386):     at
>>>  >> > > android.view.View.setBackgroundResource(View.java:7187)- 
>>>Hide quoted text -
>>>
>>>  >> > - Show quoted text -
>>>
>>>  > --
>>>  > 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+unsubscr...@googlegroups.com
>>>  > For more options, visit this group at
>  >> >http://groups.google.com/group/android-developers?hl=en
>>>
>>>  --
>>>  Romain Guy
>>>  Android framework engineer
>>>  romain...@android.com
>>>
>>>  Note: please don't send private questions to me, as I don't have time
>>>  to provide private support.  All such questions should be posted on
>>>  public forums, where I and others can see and answer them
>>
>>  --
>>  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+unsubscr...@googlegroups.com
>>  For more options, visit this group at
>>  http://groups.google.com/group/android-developers?hl=en
>>
>
>
>
>--
>Romain Guy
>Android framework engineer
>romain...@android.com
>
>Note: please don't send private questions to me, as I don't have time
>to provide private support.  All such questions should be posted on
>public forums, where I and others can see and answer them
>
>--
>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+unsubscr...@googlegroups.com
>For more options, visit this group at
>http://groups.google.com/group/android-developers?hl=en


-- 
jason.vp.engineering.particle

-- 
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+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en

Reply via email to