AsyncTask中执行完doInBackground不执行onPostExecute

来源:互联网 发布:卖家怎么在淘宝客推广 编辑:程序博客网 时间:2024/05/01 12:31

在项目中遇到一个很奇怪的问题, 在做软件升级检查的时候,调用到AsyncTask,在android2.3,android2.2  ....(小于android2.3版本系统) 发现跑完doInBackground回调函数之后, 程序不再往下运行onPostExecute了; 但是如果程序运行在android4.0以后的版本上面, 是可以正常运行onPostExecute回调函数的。

在网上看了半天, 有说是因为doInBackground中有异常没有捕捉,但是发现即使只在里面加入打印log信息,还是同样的结果, doInBackground运行完成后,onPostExecute依然没有运行。

经过大半天的折腾发现问题出在调用的方式上, 我不是在UI主线程中调用AsynTask,而是在主线程中另启线程调用AsynTask因而导致的问题, 放在主线程中调用就没有问题了。

另外, 经过这次, 发现运在线程内调用AsyncTask还是可以正常在android4.0以后版本下运行,说明源码部分做了一些改动, 有兴趣的朋友可以研究一下。