このコースでは、アプリケーション "ニュースリーダー"を作成しています。基本的には、APIからニュースのIDを取得する必要があります(最初のAsyncTask
呼び出し)。その後、これらのIDを使用して、すべてのニュース記事(Second Async呼び出し)のデータを取得し、そのデータにはその記事。 URLを取得するとDBに格納され、後で使用されます。それはJava AsyncTaskの使用
getNews news = new getNews();
String result = news.execute("https://hacker-news.firebaseio.com/v0/topstories.json?print=pretty").get();
で行われました は当然で、onPostExecute()
は使用されなかった、と私はそれを使用したいです。
だから、ここで私が得たデータをループする際、記事のIDの(第非同期コール)onPostExecute()
インサイド
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();
}
}
}
を取得するクラスがあり、私はすべての非同期呼び出しを行う必要がありID私はそのデータを取得します。
AsyncTask
を使用する別のクラスを作成せずに行う方法はありますか?
あなたは 'AsyncTask'の' doInBackground() 'ですべてをやってみませんか? 'onPostExecute()'でJSONを解析する必要があるとは何も言いません。 –
それは単純でした。ありがとう、時にはソリューションがとても簡単なので、私はそれらを監督します。 –
RxJavaの優れたユースケースのように聞こえます –