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上运行应用程序

  • Android上下文在AsyncTask中泄漏
  • 我应该给构造函数或AsyncTask.execute(params)提供params吗?
  • 在ActionBarActivity中从/等同于getActivity()
  • Android:从AsyncTask doInBackground方法调用UI线程上的方法
  • 折叠工具栏与图像从url?
  • ImageView上的Android进度条
  • 运行并行AsyncTask
  • Android的SQLite查询,插入,更新,删除,总是需要在后台线程?
  • 它们是并行执行还是以连续的顺序执行?

    如果您的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);