Wednesday, January 16, 2013

Re: [android-developers] Correct way to implement Activity onDestroy()?

If the task is actually cancellable -- that is, if it actually stops when you cancel it -- that should be sufficient.  If you implement the AT's onCancelled method, make sure it doesn't use any stale references.

G. Blake Meike
Marakana

Programming Android 2ed is now in stores:
http://bit.ly/programmingandroid


On Wednesday, January 16, 2013 4:35:53 AM UTC-8, Greenhand wrote:
In my scenario, I have a task to run but I do not want it to block my UI thread. Therefore, I adopt AsyncTask. IntentService can run a task at a time on another Thread but I do not know how to cancel it as mentioned earlier.
 
The problem I would like to deal with is that when user press back to destroy the activity, I would like to abort the task and make sure there is no memory leak. It is why I would like to cancel the task.
I expect a safe way to abort my task and destory the activity without memory leak. If it can be done, there is no problem that there is nobody to report and the task is running. None of them should be alive when user press back. To let AsyncTask to reference an Activity safely, it seems performing clean-up in onPause() is the last chance to be safe. However, it is a little early in life cycles. Sometimes, the task should be abort only if the activity is destoryed.
 
I have not tried the FragmentRetainInstance.java in API demos but It seems Fragment is the solution to my problem. Am I right?

G. Blake Meike於 2013年1月16日星期三UTC+8上午1時44分04秒寫道:
...
If the AsyncTask holds a reference to an Activity, you'll leak the activity.  That's true even if the reference is implicit (that is, if the AsyncTask is an inner class and *not* static).  Making sure that the task has no pointers to the Activity, after onPause, is safe.  On the other hand, it brings up the question of why the Task is still running, if there is nobody to whom to report a result...

G. Blake Meike
Marakana

Programming Android 2ed is now in stores:

--
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+unsubscribe@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en

No comments:

Post a Comment