[解決済み] android.os.NetworkOnMainThreadException' を修正するにはどうすればよいですか?
2022-03-03 18:04:02
質問
RssReaderのAndroidプロジェクトを実行中にエラーが発生しました。
コード
URL url = new URL(urlToRssFeed);
SAXParserFactory factory = SAXParserFactory.newInstance();
SAXParser parser = factory.newSAXParser();
XMLReader xmlreader = parser.getXMLReader();
RssHandler theRSSHandler = new RssHandler();
xmlreader.setContentHandler(theRSSHandler);
InputSource is = new InputSource(url.openStream());
xmlreader.parse(is);
return theRSSHandler.getFeed();
そして、以下のようなエラーが表示されます。
android.os.NetworkOnMainThreadException
どうすればこの問題を解決できますか?
解決方法は?
注:AsyncTaskはAPIレベル30で非推奨になりました。
AsyncTask|Android Developers
この例外は、アプリケーションがそのメインスレッドでネットワーキング処理を実行しようとしたときにスローされます。でコードを実行します。
AsyncTask
:
class RetrieveFeedTask extends AsyncTask<String, Void, RSSFeed> {
private Exception exception;
protected RSSFeed doInBackground(String... urls) {
try {
URL url = new URL(urls[0]);
SAXParserFactory factory = SAXParserFactory.newInstance();
SAXParser parser = factory.newSAXParser();
XMLReader xmlreader = parser.getXMLReader();
RssHandler theRSSHandler = new RssHandler();
xmlreader.setContentHandler(theRSSHandler);
InputSource is = new InputSource(url.openStream());
xmlreader.parse(is);
return theRSSHandler.getFeed();
} catch (Exception e) {
this.exception = e;
return null;
} finally {
is.close();
}
}
protected void onPostExecute(RSSFeed feed) {
// TODO: check this.exception
// TODO: do something with the feed
}
}
タスクの実行方法。
で
MainActivity.java
ファイルの中で、次の行を追加します。
oncreate()
メソッド
new RetrieveFeedTask().execute(urlToRssFeed);
これを忘れずに
AndroidManifest.xml
ファイルを作成します。
<uses-permission android:name="android.permission.INTERNET"/>
関連
-
[解決済み】不正な反射的アクセスとは?
-
[解決済み】「error: '.class' expected」の意味と修正方法について
-
[解決済み] JavaでInputStreamを読み込んでStringに変換するにはどうすればよいですか?
-
[解決済み] Androidのソフトキーボードをプログラムで閉じる/隠すにはどうすればよいですか?
-
[解決済み] Java Mapの各エントリを効率的に反復処理するには?
-
[解決済み] Javaでメモリーリークを発生させるにはどうしたらいいですか?
-
[解決済み] インスタンス状態の保存を使用してアクティビティ状態を保存するにはどうすればよいですか?
-
[解決済み] Mavenを使用して、依存関係を持つ実行可能なJARを作成するにはどうすればよいですか?
-
[解決済み] java.lang.UnsupportedClassVersionError を修正する方法。サポートされていないメジャー.マイナーバージョン
-
[解決済み] Eclipseが起動できない - Javaは起動したが終了コード=13を返した
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】"実引数リストと形式引数リストの長さが異なる"
-
[解決済み】不正なエスケープ文字"㊧"について
-
[解決済み】「error: '.class' expected」の意味と修正方法について
-
[解決済み】Javaでユーザー入力を待機させる方法
-
[解決済み】java.io.IOException: 壊れたパイプ
-
[解決済み】Javaを包含するクラスではないのか?
-
[解決済み】Javaメソッドスタブ
-
[解決済み] java.sql.SQLException を取得しました。ResultSet が終了した後の操作は許可されません。
-
[解決済み】koch snowflake java recursion
-
[解決済み】フォルダに書き込もうとすると「java.nio.file.AccessDeniedException」が発生する件