在诸如用户离开当前页面的情况下,还没有完成的网络加载可能就不需要继续完成了,这时候就可以通过cancel来取消正在进行中的Operaiton了
被cancel的Operation状态会做如下改变
| 状态 | cancel前 | cancel后 |
|---|---|---|
| isExecuting | true | false |
| isFinished | false | true |
| isCancelled | false | true |
事实上,Operation基类对于cancel的方法的紧紧只是更新了状态标志。剩余的任务处理还需要我们在子类中实现。当然,start()方法会在开头检测isCancelled属性,确保已经被取消的任务不会再开始
至于真正的取消再执行中的任务,只能手动在实际任务代码中去检测当前的状态是不是isCancelled,如果是的话就终止任务,比如上传下载的进度回调方法中。
或者重写cancel()方法,主动对正在执行中的任务进行终止操作,如果当前的任务支持种终止的话。
系列文章链接









网友评论