Hi,

  I wrote an app that acts as a Google Reader client. It downloads an XML
from Google, parses it and afterward analyzes web pages with regular
expressions to find image and stylesheet tags to make the pages available
offline.

  So far so good. The problem is the above mentioned tasks are pretty CPU
intensive and I also use gesture to mark items as read etc. The gesture
detection gets really bad when done during the synchronization phase (see
above).

  Those tasks from the synchronization phase are not time critical. I would
like to tell the OS that the UI thread is far more important than my
background thread. I just don't know how to do that efficiently.

 In an ideal world the OS would take care of that for me, so I started out
with "Thread.currentThread().setPriority(Thread.MIN_PRIORITY);". That didn't
have any obvious effect. Then I sprinkled "Thread.yield()" in all major
areas, in particular in the loops. But that also didn't seem to have much of
an effect. Before I know start to to all kind of silly stuff, I'd like to
pick your brains on how this is done properly?

 I am absolutely willing to use Thread.sleep(20) in some of the places I use
Thread.yield. A little bit of a pause might be a good thing for the battery
heat and power consumption, but I can't let the pause get really long, e.g.
250ms, because I wouldn't get any work done and would keep the phone awake
unnecessarily (I am holding a partial wake lock). On the other hand I am not
sure if a small pause now and then, like a 20ms pause, then 50ms work, won't
take too much a toll on the CPU for switching tasks and in the end burn the
battery too fast.
Also, what seems like a good pause for the G1 might be not so much of a good
idea on different hardware, like a Netbook.

  I could try to set the Priority of the UI thread to MAX_PRIORITY, but as I
didn't start the thread, I feel that it's not my business to change its
priority.

  I could check if the screen is off. If that is the case high resolution
touch events are not so likely so I could revert all the measurement from
above until the screen comes on again.

  So what do you think? I guess I am not the only one with the problem, or
am I?

Cheers,
Mariano

--~--~---------~--~----~------------~-------~--~----~
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