为了账号安全,请及时绑定邮箱和手机立即绑定

cancel()方法的参数设为true搞不懂什么意思

听不懂老师说的让线程继续执行操作,不是都cancel掉了吗,肯定不执行了啊

正在回答

3 回答

跟我的一模一样,至今不知道怎么解决,你搞定了吗?$a

0 回复 有任何疑惑可以回复我~

我测试:cancel只相当于一个标记flag。

这里我没设置cancel方法而是定义了一个布尔类型的全局变量flag。

private Boolean flag=false;

  1. protected void onPause() {

  2. super.onPause();

  3. if(mtask!=null&&mtask.getStatus() == AsyncTask.Status.RUNNING){

  4. //mtask.cancel(true);

  5. flag = true;

  6. }

  7. }

在onProgressUpdate方法中判断flag是否为ture

  • if(flag == true){

  • return;

  • }

这样做能得到同样的效果。


0 回复 有任何疑惑可以回复我~

这个cancel只是对AsyncTask做了一些改变。一个AsyncTask可以在任何时候通过调用cancel(true)执行取消操作,但是这个方法只是使AsyncTask的isCancelled()返回true,在调用cancel之后,这个AsyncTask的 onCancelled(Object) 方法将会取代 onPostExcute(Object) 方法作为doInBackground 方法return时候的调用方法,所以为了及时的停止当前的任务,就需要在doInBackground 的任务中时刻检测 isCancelled,然后手动 return,直接跳过当前的任务

0 回复 有任何疑惑可以回复我~
#1

行云流水V 提问者

参数true是干嘛的
2016-11-07 回复 有任何疑惑可以回复我~
#2

BINGO人生 回复 行云流水V 提问者

true就是设置这个任务它应该被取消,如果是false表示该任务允许被执行完成。
2016-11-08 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
Android必学-AsyncTask基础
  • 参与学习       40907    人
  • 解答问题       99    个

了解Android中AsyncTask的使用方法,掌握异步线程的使用

进入课程

cancel()方法的参数设为true搞不懂什么意思

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信