Android的两个AsyncTasks串行或并行执行? – 第二个是冻结,但结果是好的

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

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

它们是并行执行还是以连续的顺序执行? 我这样问,因为当第一个启动时,显示执行的进度,当我看到第二个需要更多的时间完成,但我看不到进展(我能够看到矩形,但进度栏没有显示20%..等等)。 这就像冻结,但结果是好的。

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

Solutions Collecting From Web of "Android的两个AsyncTasks串行或并行执行? – 第二个是冻结,但结果是好的"

它们是并行执行还是以连续的顺序执行?

如果您的android:targetSdkVersion是13或更高,并且您正在Android 3.2或更高版本的设备上运行,它们将被串行执行。

如果您在Android 1.5上运行,它们将被串行执行。

否则,它们将被并行执行。

您可以通过用executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR)replaceexecute()来select并行执行。

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

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

你应该看看这个链接,如果你想看看如何正确运行它们

更新:从Android开发者复制,由Yazazzello发起

“此类在API级别26.0.0-alpha1中已弃用,请直接使用AsyncTask。”

你应该使用这个并行执行:

 AsyncTaskCompat.executeParallel(new AsyncTask<Param, Void, Data>() { @Override protected Data doInBackground(Param... params) { return downloader.getData(params[0]); } @Override protected void onPostExecute(Data response) { processData(response); } }, param);