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:
> http://bit.ly/programmingandroid
>
>

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