If doInBackground() is already running, cancel can only stop the
operation if your implementation periodically check for isCancelled().
For instance:

for (int i = 0; i < count; i++) {
   if (isCancelled()) break;
   doStuff(i);
}

In addition, the parameter passed to cancel can be used to interrupt
interruptible operations (I/O for instance.) I agree the documentation
should be clearer though.

On Tue, Apr 17, 2012 at 2:26 PM, Håvard Christensen <hav...@gmail.com> wrote:
> I still think the documentation could be clearer.
>
>
> On Tuesday, April 20, 2010 10:42:49 PM UTC+2, Nathan wrote:
>>
>> Cause it doesn't.
>>
>> I have a service running an Asynctask to do some work.
>>
>> I bind to it from an activity and call a cancel method. The service,
>> in turn, calls AsyncTask.cancel(true);
>>
>> AyncTask.cancel returns true. Nonetheless, the thread is still running
>> happily and still doing the things in doInBackGround, sending
>> notifications along the way.
>>
>> There is no sign that it attempted to kill the thread.
>>
>> I am not using NDK calls or anything that I think should stop if from
>> taking down the thread.
>>
>> What am I doing wrong? Or is this a known issue?
>>
>> Nathan
>>
>> public final boolean cancel (boolean mayInterruptIfRunning)
>>
>> Since: API Level 3
>> Attempts to cancel execution of this task. This attempt will fail if
>> the task has already completed, already been cancelled, or could not
>> be cancelled for some other reason. If successful, and this task has
>> not started when cancel is called, this task should never run. If the
>> task has already started, then the mayInterruptIfRunning parameter
>> determines whether the thread executing this task should be
>> interrupted in an attempt to stop the task.
>> Parameters
>> mayInterruptIfRunning        true if the thread executing this task should
>> be
>> interrupted; otherwise, in-progress tasks are allowed to complete.
>> Returns
>> false if the task could not be cancelled, typically because it has
>> already completed normally; true otherwise
>>
>>
> --
> 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



-- 
Romain Guy
Android framework engineer
romain...@android.com

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