| From | Sent On | Attachments |
|---|---|---|
| Vikas | Aug 3, 2009 2:08 pm | |
| Vikas | Aug 5, 2009 10:45 am | |
| Mark Murphy | Aug 5, 2009 10:50 am | |
| Dianne Hackborn | Aug 5, 2009 10:56 am | |
| Vikas | Aug 5, 2009 11:48 am | |
| Mark Murphy | Aug 5, 2009 12:08 pm | |
| Maher Ali | Aug 5, 2009 1:26 pm | |
| Vikas | Aug 5, 2009 5:11 pm | |
| Mark Murphy | Aug 5, 2009 5:48 pm | |
| Vikas | Aug 10, 2009 8:58 am | |
| Vikas | Aug 11, 2009 7:36 am |
| Subject: | [android-developers] Re: Using AsyncTask as Serializable or Parcelable --> To void activity destruction(orientation or during incoming phone call) | |
|---|---|---|
| From: | Dianne Hackborn (hack...@android.com) | |
| Date: | Aug 5, 2009 10:56:13 am | |
| List: | com.googlegroups.android-developers | |
Well, using AsyncTask with serialization and parcelable is just plain wrong -- you can't serialize an actively running thread. If you just want to have some thread running in the background, and don't care if the system kills it while your application is in the background, just keep a reference on it in a static global, so whatever activity is currently running can get it.
On Wed, Aug 5, 2009 at 10:45 AM, Vikas <vik...@hotmail.com> wrote:
Any ideas?
On Aug 3, 5:08 pm, Vikas <vik...@hotmail.com> wrote:
Hi Guys,
I have a requirement where I have to read/parse some data from the server(using HTTPConnection) and then display it on to the screen. To avoid ANR issue I used AsyncTask to perform the above. Now in order to avoid application crash in case the activity gets destroyed(either by OS or if orientation changes or say on any incoming call-->where user stays on the phone for long and for some reason OS destroys/recreates the activity). Currently, I hols the reference of AsyncTask in my activity and then provide a callback(the activity itself) to AsyncTask so that I can pos back message to activity(like closing progress dialog box).In order to avoid memory leaks on onPause I nullify this activity reference in AsyncTask.Before onPause I save the AsyncTask instance using onSaveInstanceState method but I have to use putSerializable for that. I have read on the forums that serialization method is slow, so my question is should I use parcelable approach(and whether the converting AsyncTask to parcelable will be same as creating any other object parcelable). or both these approaches are totally wrong i.e. I should not be using both the above approaches if no then what is the correct approach which gives maximum performance benefits. No I read at one forum also on android blog(and in their examples) where they suggest storing AsyncTask using onRetainNonConfigurationInstance() method as that gives performance benefits but I think that approach just works only for cases where activity gets destroyed via orienattion changes but does not cover other scenarios where activity gets destroyed because of things like low memory, phone calls etc.
I would really appreciate if anybody has any suggestions or ideas on how to do it right(or if somebody can confirm that whatever I am doing is right and I just have to choose between parcelable or serializable?). I am able to get it working very well, its just that I am not sure if it can cause any issue in production.
This is such a common task and there is no good example for this and looks like people are still scratching their heads on this.
-- 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.
--~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Android Developers" group. To post to this group, send email to andr...@googlegroups.com To unsubscribe from this group, send email to andr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/android-developers?hl=en -~----------~----~----~----~------~----~------~--~---





