Using AsyncTask as Serializable or Parcelable --> To void activity destruction(orientation or during incoming phone call)

by Vikas » Tue, 04 Aug 2009 23:15:15 GMT


Sponsored Links
 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.

--~--~---------~--~----~------------~-------~--~----~



Other Threads

1. Install Android on my pocket pc

Hi,

I'm new to Android & have heard its open source, but am not very clear
on a few things.

-Is it possible to download the sources & compile it for an Intel
Xscale processor as used by most pocket pc devices?

-If the above is true, is it possible to flash the device to Android
to make it the default OS?

I'd be interested in customizing the OS for HTC devices like the
Blueangel (XDA IIs) & Universal (XDA exec).

Thanks,
/xda


--~--~---------~--~----~------------~-------~--~----~

2. onTap display toast or message

Hello,

I looked for any information about onTap event processing for itemized
overlays in this group. There is a lot of useful information but I
could not find the answer to one question.

The tutorial by Mark Murphy on itemized overlays, http://androidguys.com/?p=1413

describes how to generate a Toast message whenever an onTap event
occurs. In his case, the custom itemized overlay activity is included
in the main activity. In my case, it is not. My custom itemized
overlay activity is included in the application package as a public
activity.

This means that the line

Toast.makeText(NooYawk.this, items.get(i).getSnippet(),
Toast.LENGTH_SHORT).show();

will not work "as is".

I have had trouble in correctly identifying the context for the Toast.
Attempts to use the main class' (the one calling the custom itemized
overlay class) context have not worked. I would appreciate it if
anyone could suggest how I could resolve this issue. Incorporating the
custom itemized overlay class in the main class is not a desirable
option.

Alternatively, I would appreciate any suggestions for generating a
display of the title and/or snippet information for markers on a map.

Thanks.

Alex Donnini

P.S. the onTap event works fine (Log.i statements in the onTap method
display the correct information for each marker tapped)
--~--~---------~--~----~------------~-------~--~----~

3. How to get attributes of KeyboardView?

4. Compiling and running modified code

5. How to pass User created object between two Activity in same Application?

6. Issue creating new service as part of framework

7. URL commands when calling Youtube through Intent