私はちょっと素朴で、私はあなたがJavaで行うのと同じ方法でWebページを読むことができると思っていましたが、明らかにスレッドまたはAsyncTask
を使用する必要があります。私は以前の経験がなく、手間がかかっています。スレッドの助けを借りてURLページを読む - Android
私は半分理解しているhttp://www.vogella.com/tutorials/AndroidBackgroundProcessing/article.html(3点)を読んだことがありますが、私が問題に取り入れようとすると、すべてが崩壊します。ここで
は私の問題だ:
- 私はURLから読み取る必要があり、それはRSSフィードです。それはすべて一緒に
- は
ListView
(arrayadapter)にそれを挿入し - 解析
これは私が再作成しようとしたことを、私のAsyncTask
クラスです。バッファリングされたリーダー、またはページ全体を返すだけですが、常にnullです。
private class DownloadWebPageTask extends AsyncTask<String, Void, BufferedReader> {
@Override
protected BufferedReader doInBackground(String... urls) {
BufferedReader bs;
URL url = null;
try {
url = new URL(urls[0]);
} catch (MalformedURLException e) {
e.printStackTrace();
}
try {
bs = new BufferedReader(new InputStreamReader(url.openStream(), "UTF-8"));
return bs;
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
protected void onPostExecute(BufferedReader result) {
br = result;
}
}
public RSS() throws IOException, ExecutionException, InterruptedException {
DownloadWebPageTask dl = new DownloadWebPageTask();
dl.execute(new String[] {"http://www.promet.si/dc/PROMET.ROADEVENTS.PP.RSS.SL"});
}
これは愚かな質問である場合、私は申し訳ありませんが、私は完全にこれを説明する記事を理解していないと私は、この問題を解決する必要があります。私はちょうど形や形を問わずページのコンテンツを必要とします。 (String
、BufferedReader
することができます)
これは動作しますが、この結果をAsyncTask以外で使用するには、PostExecuteから結果を取得して、呼び出した後に印刷しようとします。 dl.execute(new String [] {"http:// www.promet.si/dc/PROMET.ROADEVENTS.PP.RSS.SL "}); とその空です。私はタイミングが間違っていると思う。 –