Hi Mark, first of all, thank you for your reply.
I have been reading in the android dev documentation ( http://developer.android.com/resources/articles/painless-threading.html) and in the end I decided to use AsyncTask, just cause with IntentService request are handled sequentially, and I prefer to have some parallelism. What I do not understand is what do you want to mean with this: > Due to possible activity configuration changes (e.g., orientation), it is probably better to have these tasks coordinated via a regular Service, but you could have an Activity manage its own if you are careful. Can you explain yourself a bit more?? Thanks again! Jose Luis. On Tue, Sep 28, 2010 at 12:48 PM, Mark Murphy <[email protected]>wrote: > On Tue, Sep 28, 2010 at 4:35 AM, Jose Luis Montes <[email protected]> > wrote: > > I have an app in which there are several requests to a server in internet > > (http), for example to retrieve images in threads outside the main UI > > process. > > The thing is that I have a Thread that manage the request with a > while(!end) > > loop and in the end a Thread.sleep(500) that checks if there are new > > unhandled requests. As I read here [1] I know that this is not a good > > practice. And users have complain about ANR (app not responding) in > several > > cases. > > If you are getting an ANR, then you are not handling your background > thread properly. ANRs are triggered by the *main application thread* > being blocked. > > > Knowing that obviously I want to refactor all the way my app manage the > > requests and I want to do that the best way. > > So, the question is; what is the best approach for doing this? A service? > a > > broadcast receiver and send intents when I need a request to be handled? > > Since we have no good way of identifying your criteria for "best", all > we can do is give you options. Here are two: > > An IntentService would be a close analog to what you are doing today, > with the side benefit of dumping the sleep() call. The IntentService > would do the download, then let the activity know about the downloaded > image via a private broadcast, or createPendingResult(), or something. > The activity would use startService() to ask the IntentService to do > the download. > > Rather than a single thread, you could use an AsyncTask per download. > This allows for some parallelism, since each AsyncTask gets its own > thread out of a thread pool. Due to possible activity configuration > changes (e.g., orientation), it is probably better to have these tasks > coordinated via a regular Service, but you could have an Activity > manage its own if you are careful. > > -- > Mark Murphy (a Commons Guy) > http://commonsware.com | http://github.com/commonsguy > http://commonsware.com/blog | http://twitter.com/commonsguy > > Android Training in Atlanta: http://bignerdranch.com/classes/android > > -- > 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 -- 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

