android - 运行并行 AsyncTask

标签 android background android-asynctask

我的应用程序中有一个 SplashActivity,它在我启动应用程序时使用 AsyncTask 执行一些操作。

我还创建了另一个从服务器下载数据的 AsyncTask。现在,在我关闭应用程序后,AsyncTask 仍在下载数据。

但是当我再次启动我的应用程序时,我的 SplashActivity 的 AsyncTask 不会执行其后台(doInBackground 函数),直到我的下载器 AsyncTask 完成,并且我的应用程序被挂起。

所以我的问题是我们不能并行运行两个 AsyncTask 吗?两个 AsyncTask 都是不同的并且做自己的事情。 有什么办法吗。

最佳答案

Honeycomb 版本中的 AsyncTask 发生了变化。旧版本有一个 10 个线程的线程池,因此您可以并行运行 10 个任务。但是对于 Honeycomb 及更高版本,默认是串行执行器,它会一个接一个地执行任务。但是你可以传递一个 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();
   }

关于android - 运行并行 AsyncTask,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13910508/

相关文章:

ios - 设置随机应用背景图片iOS 6

jquery - Webkit 不会使用 jQuery 切换背景图像

css - 有没有办法让背景图像在 moz-linear-gradients 上渲染

java - 如何定期检查 Parse Server 上的更新?

android - AsyncTask 用法

java - "silently"的 Android 进程使用刷新 token 获取新的访问 token

android - getContext 和 getResource 在 5.0 及更低版本之间的兼容性

java - 从函数内启用 Android 应用程序按钮

Android/Eclipse 将工作区从一台计算机移动到另一台计算机

java - Android 中的游标 NotSerializedException