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

来源:互联网 发布:过去 现在 未来知乎 编辑:程序博客网 时间:2024/05/08 02:32

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


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


解决方法:要么直接使用Thread,要么创建一个单独的线程池 (Executors.newCachedThreadPool())。或者最简单的解法就是使用 executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR),这样起码不用等到前面的都结束了再执行


0 0
原创粉丝点击