Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/346.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android两个异步任务串行或并行执行?-第二个是冻结,但结果是好的_Java_Android_Android Asynctask_Progress Bar - Fatal编程技术网

Java Android两个异步任务串行或并行执行?-第二个是冻结,但结果是好的

Java Android两个异步任务串行或并行执行?-第二个是冻结,但结果是好的,java,android,android-asynctask,progress-bar,Java,Android,Android Asynctask,Progress Bar,我在Android应用程序中运行两个AsyncTask任务,它们来自同一个类,但参数不同。例如: new myAsynckTask(a,b,c).execute(); new myAssyncTask(a,d,e).execute(); 它们是并行执行还是串行执行?我这样问是因为当第一个开始时,显示执行的进度,当完成时,我看到第二个需要更多时间来完成,但我看不到进度(我可以看到矩形,但进度条没有显示20%……等等)。这就像冻结,但结果是好的 我想做的是以串行顺序运行它们,并能够看到它们两个的进

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

new myAsynckTask(a,b,c).execute();
new myAssyncTask(a,d,e).execute();
它们是并行执行还是串行执行?我这样问是因为当第一个开始时,显示执行的进度,当完成时,我看到第二个需要更多时间来完成,但我看不到进度(我可以看到矩形,但进度条没有显示20%……等等)。这就像冻结,但结果是好的

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

它们是并行执行还是串行执行

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

如果你在安卓1.5上运行,它们将被串行执行

否则,它们将并行执行

您可以通过将
execute()
替换为
executeOnExecutor(AsyncTask.THREAD\u POOL\u EXECUTOR)
来选择并行执行


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

您的问题的答案是:这完全取决于您在哪个版本的Android上运行此功能,这是我在多个应用程序中遇到的一个巨大问题

如果您想了解如何正确运行它们,请查看更新:从Yazazzello复制并由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);
AsyncTaskCompat.executeParallel(新的AsyncTask(){
@凌驾
受保护的数据doInBackground(参数…参数){
返回downloader.getData(参数[0]);
}
@凌驾
受保护的void onPostExecute(数据响应){
过程数据(响应);
}
},param);

“AsyncTaskCompat”此类在API级别26.0.0-alpha1中被弃用。直接使用异步任务。