Android AnsyTask不执行dobackground


最近做项目的时候遇到一个问题


无网络的时候AnsyTask执行完后会提示网络连接失败


但是第二次执行的时候 ,却不提示, 一直在等待


后来我断点调试了下 发现是dobackground方法没执行

我查了些资料 发现android3.0以上建议是走Executor执行Task

个人见解是这样的:第一个ansyTask执行后 虽然网络连接失败了
但是线程应该是没有完全结束,导致第二个task在等待,虽然执行了onPreExecute 但却没有执行doBackground,所以会出问题

解决方法如下:

if( Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB ) {
                    task.executeOnExecutor(task.THREAD_POOL_EXECUTOR, params);
                } else {
                    loginTask.execute(params);
                }

上面的代码判断如果是3.0以上额话再executor中执行,否则的话就直接可以执行。

这种方式官方的解释是可以执行5个Task,所以连续几次后还会出现上述情况,但至少第二次不会出现,相信不会有人闲着没事没网络时候一直点着玩耍。