gpt4 book ai didi

java - 如何仅在某些异步执行完成后才执行代码?

转载 作者:行者123 更新时间:2023-12-02 10:20:31 25 4
gpt4 key购买 nike

我是编程和 Android 开发领域的新手。我有 3 个异步方法可以在 MainActivity 中从服务器获取数据,假设它被调用

getUserDataFromServer()
getProductsDataFromServer()
getBannersFromServer()

如果每个请求需要 1 秒,那么如果我将其一个接一个地链接(串联),则需要 3 秒才能完成这 3 个请求。

所以我想要的是......我想异步(并行)发出这3个请求,然后如果这3个请求已经完成(失败或成功)那么我想做其他事情,比如说显示上 Toast 消息。这样我可以更快地完成它,也许只需要大约 1.2 秒,而不是 3 秒。

我不知道如何做到这一点,也不知道调用什么特殊方法将其包装在 Android 中?

如何在 Java 或 Kotlin 中做到这一点?

最佳答案

以下代码应该可以帮助您开始实现您的目的。它还对正在发生的事情进行了解释。您可以根据需要更改参数:

执行任务:

MyTask myTask = new MyTask();
myTask.execute(String1);

//OR:
new MyTask().execute(String1, String2, String3...);

创建任务:

//The first type in AsyncTask<> is for specifying the type of input given.
//Second parameter: Type of data to give to onProgressUpdate.
//Third parameter: Type of data to give to onPostExecute.
private class MyTask extends AsyncTask<String, String, String> {

private String resp;
ProgressDialog progressDialog;

@Override
protected String doInBackground(String... params) {
publishProgress("Processing ..."); // Calls onProgressUpdate()
//params is the input you've given that can be used for processing.

getUserDataFromServer()
getProductsDataFromServer()
getBannersFromServer()

//Result is the String to give onPostExecute when the task is done executing.
String result = "Done Processing";
return result;
}

@Override
protected void onPostExecute(String result) {
// Get the result from your task after it is done running.
progressDialog.dismiss();
//IMPORTANT: As you asked in your question, you can now execute whatever code you
//want since the task is done running.

}

@Override
protected void onProgressUpdate(String... text) {
//Progress has been updated. You can update the proggressDialog.
}
}

关于java - 如何仅在某些异步执行完成后才执行代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54374562/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com