您的位置:首页 > 其它

AsyncTask引发的一个问题:doInBackground()未及时执行

2015-09-06 23:03 232 查看
在公司实习时遇到一个很奇怪的问题,doInBackground()未及时执行,也就是它并没有在execute()调用之后马上执行,而是等待了很久才得以执行。

查资料了解到:因为是4.0平台,所以所有 的AsyncTask并不都会运行在单独的线程中,而是被SERIAL_EXECUTOR顺序的使用线程执行。因为我的应用中还有其他地方使用 AsyncTask,所以到网络取图片的AsyncTask也许会等待到其他任务都完成时才得以执行而不是调用executor()之后马上执行。

解决方法:要么直接使用Thread,要么创建一个单独的线程池 (Executors.newCachedThreadPool())。或者最简单的解法就是使用 executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR),这样起码不用等到前面的都结束了再执行。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: