问题是这样的,在调用一个查询方法的时候用到了Task去请求服务,但是发现有时会进入doInBackground,有时就进不去。最后查找问题是发现因为项目本身比较旧了,其中有很多的其他服务在调用,而服务又出现异常导致这个任务无法结束。到时没有可用线程分配导致的
execute()和executeOnExecutor()
execute()提交的任务会使用系统默认的线程池去执行,如果有多个使用,而线程又处于使用状态,后加入的Task就会无法正常及时的执行
executeOnExecutor()
通过executeOnExecutor(Executors.newCachedThreadPool()),创建一个新的线程池给Task调用则不会出现第一种的问题。保证其他的Task不会影响此Task