gpt4 book ai didi

java - Java AsyncTask 的使用

转载 作者:行者123 更新时间:2023-12-02 13:41:07 25 4
gpt4 key购买 nike

在本类(class)中,我将创建一个应用程序“新闻阅读器”。基本上,我需要从 API 获取新闻的 ID(第一个 AsyncTask 调用),然后使用这些 ID,获取每篇新闻文章的数据(第二个异步调用),并在该数据中有一个指向该文章的 URL。当我获得 URL 时,我将其存储在数据库中,稍后使用。在类(class)中,它是用

完成的
getNews news = new getNews();
String result = news.execute("https://hacker-news.firebaseio.com/v0/topstories.json?print=pretty").get();

onPostExecute() 没有使用,我想使用它。

所以,这是获取文章 ID 的类(第一次异步调用)

public class getNews extends AsyncTask<String, Void, String>{

@Override
protected String doInBackground(String... params) {
URL url;
String result = "";
HttpURLConnection connection = null;
try {
url = new URL(params[0]);
connection = (HttpURLConnection) url.openConnection();
InputStream in = connection.getInputStream();
InputStreamReader reader = new InputStreamReader(in);
int data = reader.read();
while(data != -1){
char current = (char) data;
result += current;
data = reader.read();
}
}
catch (Exception e){
e.printStackTrace();
}
return result;
}

@Override
protected void onPostExecute(String s) {
try {
JSONArray jsonArray = new JSONArray(s);
//System.out.println("asasd" + jsonArray);
for(int i = 0; i< 20; i++){


}
} catch (JSONException e) {
e.printStackTrace();
}
}
}

onPostExecute() 中,当循环获取我得到的数据时,我必须对我在该数据中获取的每个 ID 进行异步调用。

那么有没有什么方法可以在不创建另一个使用 AsyncTask 的类的情况下完成此操作?

最佳答案

doInBackground() 中解析数据,而不是在 onPostExecute 方法中。完成从 JSON 响应中解析和提取数据后,调用下一个 API 并在相同的 doInBackground() 方法中解析其响应。

旁注

始终建议将上下文分开,不要混淆。模块化有助于通过附加功能扩展代码。创建扩展AsyncTask的专用并没有什么坏处。保持代码简洁,以便稍后阅读和理解。

关于java - Java AsyncTask 的使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42741758/

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