Thanks for that Shawn, but I'm looking for a solution that doesn't involve
external libraries.

On Fri, Sep 10, 2010 at 10:45 AM, Shawn Brown <big.coffee.lo...@gmail.com>wrote:

> > Has anybody got any idea why this would be happening?
>
> Well...  from
> http://brainflush.wordpress.com/2009/11/16/introducing-droid-fu-for-android-betteractivity-betterservice-and-betterasynctask/
>
> So the basic idea is: launch an AsyncTask making your service call,
> show a nifty progress dialog while the task thread is running, and
> have the task’s result be posted back to your activity once it
> completes. Cool, but what if the user decides to rotate the screen
> while your task is running? Or a phone call comes in, interrupting
> your app, and Android decides to kill it? Both these actions will
> effectively terminateyour activity, and recreate it when resuming
> (yes, a screen rotation kills your activity, very clever, isn’t it?).
> Unfortunately, any AsyncTask that was still running now holds a stale
> reference to your activity, because the restarted activity will be an
> entirely different object in memory (and it will go through
> onCreate(), as if the activity had started for the first time). I’m
> not entirely sure whether AsyncTask will actually post back the data
> to the old activity object (if it was a weak reference, it may already
> have been garbage collected), but in any case, your “new” activity
> will never see it, because it’s a different instance.
>
> Now, one could argue: well, just do all the work again, like, re-send
> the request or whatever job was running. Yes, you could do that. But
> that’s wasteful and, really, makes you feel stupid, no? Plus, if the
> user triggers a web service request, then flips the screen, decides
> that this wasn’t helpful, and flips it back, then your request is
> being sent 3 times in parallel. Is that what you want? Probably not.
>
> BetterAsyncTask to the Rescue
>
> Thanks to Droid-Fu, there’s a solution to this: BetterAsyncTask! (I’m
> a lazy person, and I couldn’t come up with a better name). It behaves
> exactly like AsyncTask (in fact, it is an AsyncTask), but it does some
> extra work for you: first and foremost, it keeps track of the active
> instance of the context that launched it, and if that instance should
> change, it will post the data back to the new instance. In other
> words, you can dispatch your task, flip the screen back and forth
> mentally, and BetterAsyncTask will still post the task’s result back
> to whatever activity instance is alive at the time it finishes. In
> other words, the task is only ever run once, regardless whether the
> context in which it was launched died while it was running or not.
>
> http://github.com/kaeppler/droid-fu
>
> --
> 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

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