It won't help and that's not what it's for. But if you are writing a GL game, or an app like Google Maps, this allows you to reuse the same chunk of memory to load new textures/tiles.
On Mon, Jan 17, 2011 at 1:30 PM, Streets Of Boston <[email protected]>wrote: > Thank you Romain! > > About the 'inBitmap' option: > I (and, i think, Matthew as well) were thinking about editing an > existing image from file, i.e. manipulating the pixel-data through > some algorithms (correct me if i'm wrong, Matthew). The 'inBitmap' > option does not seem to help for this particular usage. > > > On Jan 17, 3:21 pm, Romain Guy <[email protected]> wrote: > > Quick update: > > > > Android 3.0 will give you the ability to load mutable bitmaps from > > BitmapFactory. The API relies on BitmapFactory.Options, and a new field > call > > "inMutable." While I'm at it, know that we've added another API to > > BitmapFactory.Options that lets you decode a Bitmap into an existing > bitmap > > (provided their size and configuration match.) By using > > BitmapFactory.Options.inBitmap you can reuse the same bitmap over and > over > > again and save memory. > > > > On Mon, Jan 17, 2011 at 12:05 PM, Streets Of Boston < > [email protected] > > > > > > > > > > > > > wrote: > > > I would vote with all my 4 thumbs up for the *option* of creating a > > > mutable bitmap from a file/input-stream/etc. For optimizations, the > > > default should still be immutable bitmaps (as you described), but an > > > option for loading it into a mutable bitmap would be great!. > > > > > Question: > > > Is there a way around this in Android2.2, by using the Bitmap's *NDK* > > > api? > > > > > On Jan 17, 2:55 pm, Romain Guy <[email protected]> wrote: > > > > I'll try to add a new API to load mutable bitmaps from BitmapFactory > but > > > I > > > > can't make any guarantee as to when it will be added to the platform > > > (it's > > > > doubtful it will be in the first release of Android 3.0.) The main > reason > > > > why bitmaps are mutable when loaded from a BitmapFactory is > optimization. > > > > When a Bitmap is immutable the rendering layer might be able to draw > it > > > more > > > > efficiently. Also, when a Bitmap is loaded from resources and used in > > > > drawables, it is shared by all the drawables. It's also better to > have > > > > immutable bitmaps when recording pictures (which is what WebView does > for > > > > faster rendering.) > > > > > > As for your Log.d issue, I have never used a Galay Tab, so I have no > > > idea. > > > > I've used Log.d successfully on numerous other devices though. > > > > > > On Mon, Jan 17, 2011 at 11:46 AM, Matthew Fleming <[email protected]> > > > wrote: > > > > > Thanks very much for the explanation regarding the 3 memory > functions. > > > > > I should have known this; my mistake. > > > > > > > I really wish Google would consider modifying the BitmapFactory > > > > > methods to allow for loading a mutable bitmap from a file/stream/ > > > > > resource. The current arrangement has no obvious justification, > and, > > > > > judging from a few postings here and there, has caused problems for > > > > > other developers as well. > > > > > > > Any thoughts on why I can't use Log.d with actual hardware? > > > > > > > Matthew Fleming > > > > > > > On Jan 17, 12:44 pm, Romain Guy <[email protected]> wrote: > > > > > > Hi Matthew, > > > > > > > > I am sorry that you didn't get a better answer before, but this > is, > > > > > > unfortunately, the only way of doing it with the existing APIs. > This > > > kind > > > > > of > > > > > > feedback is important to us because it tells us what APIs > application > > > > > > developers need. > > > > > > > > As for your second question, the values returned are expected. > > > > > > Runtime.freeMemory() tells you how much you can still allocate on > the > > > > > heap > > > > > > before it needs to expand. Runtime.totalMemory() indicates the > > > current > > > > > size > > > > > > of the heap, and Runtime.maxMemory() tells you how big the heap > can > > > be > > > > > > before your run out of memory. > > > > > > > > On Mon, Jan 17, 2011 at 4:18 AM, Matthew Fleming < > [email protected]> > > > > > wrote: > > > > > > > Hi, > > > > > > > > > I posted earlier about my need to find a way to load a mutable > > > bitmap. > > > > > > > I need to be able to load a bitmap from an input stream, > annotate > > > it, > > > > > > > and save it. At present, the only thing I seem to be able to do > is > > > > > > > load an immutable bitmap, copy it, annotate the copy, and then > save > > > > > > > that. THIS IS NOT A SOLUTION, because then I need memory for > two > > > > > > > copies of the bitmap, and I am working with large images. > > > > > > > > > COULD SOMEONE FROM GOOGLE PLEASE TELL US WHY the BitmapFactory > > > methods > > > > > > > don't have the option of creating the Bitmap as mutable? A bit > > > heavy- > > > > > > > handed to force the Bitmap to be immutable, don't you think? > For > > > that > > > > > > > matter, DOES ANYONE AT GOOGLE PAY ANY ATTENTION TO THIS GROUP? > You > > > > > > > post to the Apple Developer groups, you get an answer (even on > the > > > > > > > weekend) from a real live person who knows what he's talking > about, > > > > > > > and who is (usually) on the Apple payroll. Not here. > > > > > > > > > Second question. I figured I would check the available memory > > > before > > > > > > > loading the bitmap, then load it at reduced resolution if > > > necessary. > > > > > > > But Runtime.getRuntime().freeMemory() returns values that make > no > > > > > > > sense. For example, if I put this in the onCreate of my first > > > (main) > > > > > > > activity: > > > > > > > long freeMemory = Runtime.getRuntime().freeMemory(); > > > > > > > Log.d("tag",String.valueOf(freeMemory)); > > > > > > > freeMemory = Runtime.getRuntime().maxMemory(); > > > > > > > Log.d("tag",String.valueOf(freeMemory)); > > > > > > > I get a total memory of 16,777,216, but free memory of only > > > 472,824. > > > > > > > This can't be right. > > > > > > > > > The above is with the emulator. When I try it with my Samsung > > > Galaxy > > > > > > > Tab, I don't get any information, because Log.d() doesn't seem > to > > > work > > > > > > > at all with the actual hardware. Why is that? > > > > > > > > > Some real assistance with these problems would be much > appreciated. > > > > > > > Google? Anyone home? > > > > > > > > > Matthew Fleming, MD > > > > > > > Fleming Dermatopathology, LLC > > > > > > > DermVision, LLC > > > > > > > > > -- > > > > > > > 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]<android-developers%[email protected]> > <android-developers%2Bunsubs[email protected]> > > > <android-developers%2Bunsubs[email protected] > > > ><android-developers%2Bunsubs > > > > > [email protected]> > > > > > > > For more options, visit this group at > > > > > > >http://groups.google.com/group/android-developers?hl=en > > > > > > > > -- > > > > > > Romain Guy > > > > > > Android framework engineer > > > > > > [email protected] > > > > > > > > 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 > > > [email protected] > > > > > To unsubscribe from this group, send email to > > > > > [email protected]<android-developers%[email protected]> > <android-developers%2Bunsubs[email protected]> > > > <android-developers%2Bunsubs[email protected]> > > > > > For more options, visit this group at > > > > >http://groups.google.com/group/android-developers?hl=en > > > > > > -- > > > > Romain Guy > > > > Android framework engineer > > > > [email protected] > > > > > > 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- 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 > [email protected] > > > To unsubscribe from this group, send email to > > > [email protected]<android-developers%[email protected]> > <android-developers%2Bunsubs[email protected]> > > > For more options, visit this group at > > >http://groups.google.com/group/android-developers?hl=en > > > > -- > > Romain Guy > > Android framework engineer > > [email protected] > > > > 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- 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 [email protected] > To unsubscribe from this group, send email to > [email protected]<android-developers%[email protected]> > For more options, visit this group at > http://groups.google.com/group/android-developers?hl=en > -- Romain Guy Android framework engineer [email protected] 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 [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

