san*_*eev 24 android background android-asynctask
我的应用程序中有一个SplashActivity,它在我启动应用程序时使用AsyncTask做一些事情.
我还创建了另一个从服务器下载数据的AsyncTask.现在关闭我的应用程序后,AsyncTask仍在下载数据.
但是,当我再次启动我的应用程序时,我的SplashActivity的AsyncTask不执行其后台(doInBackground函数),直到我的下载器AsyncTask完成,我的应用程序被挂起.
所以我的问题是我们不能运行两个AsyncTask并行?AsyncTask都是不同的,并且正在做自己的事情.有没有办法做到这一点.
S.D*_*.D. 39
来自Honeycomb版本的AsyncTask发生了变化.旧版本的线程池有10个线程,因此您可以并行运行10个任务.但对于Honeycomb及以上版本,default是一个串行执行器,它逐个执行任务.但你可以通过ThreadPoolExecutor执行:
if (Build.VERSION.SDK_INT >= 11) {
//--post GB use serial executor by default --
task.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
} else {
//--GB uses ThreadPoolExecutor by default--
task.execute();
}
Run Code Online (Sandbox Code Playgroud)
nan*_*esh 35
您将需要使用a thread pool Executor来执行AsyncTask.默认实现使用在单个线程上运行的串行执行程序
所以创建一个ThreadPoolExecutor然后使用
AsyncTask的executeOnExecutor而不仅仅是execute方法