The same code works great on the G1 and the MyTouch.  We've done some
testing on the Hero, and the Moment, but only on the Droid is the
issue significant.  I've told my boss that I am spending time porting
to the Droid.

You have explained that "bitmaps are scaled and require more memory".
This creates a stricter limitation, on the complexity possible for my
xml, on the frequency with which I can create bitmaps, etc.

It's a bug if an application works on phones A, B, C and D, but not
E.  My first instinct is not to blame the guy who wrote the
application, but the guys responsible for handset E's software.  In
fact situations like that are the textbook case for a bug with handset
E.  Especially if handset E is newer, or running a newer firmware then
handsets A, B, C and D.

I think this is a big deal, especially given the fact for a lot of
users and non users, Droid  --  Android.  I'd consider it a priority
to make sure that G1 applications can run on the Droid.

Extensive googling didn't lead me to a lot of other people
complaining, so I may be one of the unlucky few who happens to use the
exact amount of memory such that it works on every phone but the
Droid.  I'm not unfamiliar with that sort of luck :)

Extensive googling did lead me to old posts I remember reading the
year they were written, and I remember being suprised by how Bitmap
memory was handled then.



On Dec 2, 5:40 pm, Romain Guy <romain...@android.com> 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

Reply via email to