As far as I can tell, AsyncTask's cancel method doesn't work as
advertised.  I can't tell whether this is a bug, or me not
understanding AsyncTask's cancel() method.  I'm asking here instead of
StackOverflow because I suspect it's a bug.

I understand from past discussions here that cancel() isn't meant to
actually kill a thread (though the description of the
mayInterruptIfRunning flag sure implies it is). But I'm also checking
for isCancelled() (which is returning false), and trying to use the
onCancelled callback (which isn't getting called), to no avail.

My situation is that I have a (short-running, one small network call)
AsyncTask that begins in my Activity's onCreate. If the user backs out
of the screen before it finishes though, I need to either cancel the
AsyncTask entirely, or at least make sure its onPostExecute doesn't do
any meaningful work.

In my activity's onDestroy handler, I call cancel() on the task, and
then inside the task I have an onCancelled handler that sets a
boolean.  In my onPostExecute handler, I check isCancelled(), and I
also check to see whether the boolean has been set from onCancelled,
and neither are.

I'm using the debugger, and the order of operations is:

1) onDestroy(), calls task.cancel()
2) task's onPostExecute runs, isCancelled() returns false, so I have
no conditional to stop the flow

and that's it. onCancelled never runs.

What am I doing wrong here? I can't find any way to tell my task not
to run its work in onPostExecute.

-- 
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en

Reply via email to