Android 两个异步任务串行或并行执行?- 第二个是冻结,但结果还可以

我在我的Android应用程序中运行两个AsyncTask任务,它们来自同一类但具有不同的参数。例如:

new myAsynckTask(a,b,c).execute();
new myAssyncTask(a,d,e).execute();

它们是并行执行还是串行顺序执行?我问这个是因为当第一个开始时,显示执行进度,当完成时,我看到第二个需要更多时间才能完成,但我看不到进度(我能够看到矩形,但进度条不显示20%。等等)。这就像冻结,但结果还可以。

我想做的是按顺序运行它们,并能够看到其中两个的进度。我在 Android Jelly Bean 4.2.2 API 级别 17 上运行该应用


答案 1

它们是并行执行还是串行顺序执行?

如果您的年龄在 13 岁或以上,并且您在 Android 3.2 或更高版本的设备上运行,则将按顺序执行。android:targetSdkVersion

如果您在Android 1.5上运行,它们将按顺序执行。

否则,它们将并行执行。

您可以通过替换为 来选择并行执行。execute()executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR)

有关详细信息,请参阅 AsyncTask JavaDocs 的“执行顺序”部分。


答案 2

你的问题的答案是:这完全取决于你运行这个版本的Android,这是我在几个应用程序中遇到的一个大问题。

如果您想了解如何正确运行它们,则应查看此链接


推荐