CancellationToken

public abstract class CancellationToken 

Propagates notification that operations should be canceled.

Developers writing methods that return a Task should take a CancellationToken as a parameter if they wish to make the Task cancelable (see below code snippet). A CancellationToken can only be created by creating a new instance of . CancellationToken is immutable and must be canceled by calling cancel on the CancellationTokenSource that creates it. It can only be canceled once. If canceled, it should not be passed to future operations.

When cancel is called, all the Tasks with the CancellationToken from that CancellationTokenSource will be canceled. This operation only flags those Tasks as canceled, and the API author is responsible for stopping whatever the Task is actually doing to free up the resources.

Cancellable Task example:

 public 
  
 Task<Integer> 
  
 doSomething 
 ( 
 CancellationToken 
  
 token 
 ) 
  
 { 
  
 // 
  
 Attach 
  
 a 
  
 listener 
  
 that 
  
 will 
  
 be 
  
 called 
  
 once 
  
 cancellation 
  
 is 
  
 requested 
 . 
  
 token 
 . 
 onCanceledRequested 
 ( 
 new 
  
 OnTokenCanceledListener 
 () 
  
 { 
  
 @Override 
  
 public 
  
 void 
  
 onCanceled 
 () 
  
 { 
  
 // 
  
 Some 
  
 other 
  
 operations 
  
 to 
  
 cancel 
  
 this 
  
 Task 
 , 
  
 such 
  
 as 
  
 free 
  
 resources 
 ... 
  
 } 
  
 } 
 ); 
  
 final 
  
 TaskCompletionSource<Integer> 
  
 tcs 
  
 = 
  
 new 
  
 TaskCompletionSource 
<> ( 
 token 
 ); 
  
 // 
  
 do 
  
 something 
 ... 
 } 
 CancellationTokenSource 
  
 cts 
  
 = 
  
 new 
  
 CancellationTokenSource 
 (); 
 Task<Integer> 
  
 task 
  
 = 
  
 doSomething 
 ( 
 cts 
 . 
 getToken 
 ()); 
 cts 
 . 
 cancel 
 (); 
Cancellable Task example in android.app.Activity context:
 public 
  
 class 
  
 MyActivity 
  
 extends 
  
 Activity 
  
 { 
  
 // 
  
 ... 
  
 @ 
 Override 
  
 public 
  
 void 
  
 onStart 
 () 
  
 { 
  
 super 
 . 
 onStart 
 (); 
  
 // 
  
 Typically 
  
 use 
  
 one 
  
 cancellation 
  
 source 
  
 per 
  
 lifecycle 
 . 
  
 cancellationSource 
  
 = 
  
 new 
  
 CancellationTokenSource 
 (); 
  
 // 
  
 That 
  
 source 
 's token can be passed to multiple calls. 
  
 doSomethingCancellable 
 ( 
 cancellationSource 
 . 
 getToken 
 ()) 
  
 . 
 onSuccessTask 
 ( 
 result 
  
 - 
>  
 doSomethingElse 
 ( 
 result 
 , 
  
 cancellationSource 
 . 
 getToken 
 ())); 
  
 } 
  
 @ 
 Override 
  
 public 
  
 void 
  
 onStop 
 () 
  
 { 
  
 super 
 . 
 onStop 
 (); 
  
 cancellationSource 
 . 
 cancel 
 (); 
  
 } 
 } 

Summary

Public constructors

Public methods

abstract boolean

Checks if cancellation has been requested from the CancellationTokenSource .

abstract @ NonNull CancellationToken

Adds an OnTokenCanceledListener to this CancellationToken .

Public constructors

CancellationToken

public  CancellationToken 
()

Public methods

isCancellationRequested

public abstract boolean  isCancellationRequested 
()

Checks if cancellation has been requested from the CancellationTokenSource .

Returns
boolean

true if cancellation is requested, false otherwise

onCanceledRequested

public abstract @ NonNull 
 CancellationToken 
 onCanceledRequested 
(@ NonNull 
 OnTokenCanceledListener 
 listener)

Adds an OnTokenCanceledListener to this CancellationToken .

Parameters
@ NonNull OnTokenCanceledListener  listener

the listener that will fire once the cancellation request succeeds.

Design a Mobile Site
View Site in Mobile | Classic
Share by: