I did some profiling and it turned out significant time is spent on loading images. Each listview item has a distinctive image. i have thousands of items in my listview so I cannot cache them. I tried to create an image on card folder cache of either PNG or JPEG image files of exactly the same dimension as the images I render in listview item ImageView. It helped but still not ideal.
I thought about saving uncompressed bitmap data to a an image cache file with hope it will be faster to load and render since the image won't need to be decompressed. But i didn't find any class or method to save and load uncompressed bitmaps. The only way I see to save the image to a disk file is Bitmap.compress which can be either JPEG or PNG (BTW, which one from these two is faster to load and render?). I also thought about loading images in worker thread but this appears to be very complicated and I am not sure it will help and won't create other problems. I would have to create a queue if currently visible items and have to load images inside that thread. I worry that while I load a title image it is already scrolled out and becomes invisible. On Aug 26, 11:26 pm, Dianne Hackborn <hack...@android.com> wrote: > http://developer.android.com/guide/developing/tools/traceview.html > > <http://developer.android.com/guide/developing/tools/traceview.html>This may > not be documented, but in newer versions you can use the "am" command to > start and stop profiling. Use "adb shell am" to get help for the command. > > > > > > On Thu, Aug 26, 2010 at 7:59 PM, ls02 <agal...@audible.com> wrote: > > How do I profile the code? I do recycle bitmaps since each list item > > displays its own bitmap image and without recycling I quickly run out > > of memory. > > > On Aug 26, 10:50 pm, Dianne Hackborn <hack...@android.com> wrote: > > > Run your code in a profiler. > > > > Make sure you aren't thrashing through temporary objects. If the GC is > > > running much while scrolling, optimize to reduce temp objects. > > > > On Thu, Aug 26, 2010 at 6:18 PM, ls02 <agal...@audible.com> wrote: > > > > I have list view with fairly complex list view items consisting of > > > > several image views, several text views, progress bars, etc. Depending > > > > on the state of the item some of these elements can be show and some > > > > are hidden. I understand that listview recycles views. Right now I am > > > > dealing with slow listview scrolling especially on lower powered > > > > devices. What's the best way to deal with this problem? > > > > > I already optimized each list item view as much as I could. Now I am > > > > facing with what's the best? Use one single view with many children > > > > for all items and hide and show various children depending on the item > > > > state. This way I do not inflate each item view as list is being > > > > scrolled but need to show and hide constantly various child views. > > > > > Another approach is to build item view dynamically each time view is > > > > requested in the adapter getView method. In this case I can only add > > > > at run time those elements that are truly needed for current item > > > > state but this requires inflating item view every time. > > > > > Finally the third approach is most extreme is to have one custom view > > > > and draw everything myself. This of cause requires a lot of work. > > > > > -- > > > > 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<android-developers%2bunsubscr...@googlegroups.com> > > <android-developers%2bunsubscr...@googlegroups.com> > > > > For more options, visit this group at > > > >http://groups.google.com/group/android-developers?hl=en > > > > -- > > > Dianne Hackborn > > > Android framework engineer > > > hack...@android.com > > > > Note: please don't send private questions to me, as I don't have time to > > > provide private support, and so won't reply to such e-mails. 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 android-developers@googlegroups.com > > To unsubscribe from this group, send email to > > android-developers+unsubscr...@googlegroups.com<android-developers%2bunsubscr...@googlegroups.com> > > For more options, visit this group at > >http://groups.google.com/group/android-developers?hl=en > > -- > Dianne Hackborn > Android framework engineer > hack...@android.com > > Note: please don't send private questions to me, as I don't have time to > provide private support, and so won't reply to such e-mails. 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 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