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