728x90
반응형
질문 : 'android.os.NetworkOnMainThreadException'을 수정하는 방법?
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 개발자
이 예외는 응용 프로그램이 기본 스레드에서 네트워킹 작업을 수행하려고 할 때 발생합니다. AsyncTask
에서 코드를 실행합니다.
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();
작업 실행 방법 :
MainActivity.java
oncreate()
메소드 내에이 행을 추가 할 수 있습니다.
new RetrieveFeedTask().execute(urlToRssFeed);
AndroidManifest.xml
파일에 추가하는 것을 잊지 마십시오.
<uses-permission android:name="android.permission.INTERNET"/>
출처 : https://stackoverflow.com/questions/6343166/how-to-fix-android-os-networkonmainthreadexception
728x90
반응형
'프로그래밍 언어 > Android' 카테고리의 다른 글
Android의 MVC 패턴 (0) | 2021.09.08 |
---|---|
초기 텍스트가 "Select One"인 Android Spinner를 만드는 방법 (0) | 2021.09.08 |
여러 장치가 연결된 경우 ADB Shell을 사용하는 방법 "error: more than one device and emulator" (0) | 2021.09.07 |
Android Studio 업그레이드시 "Default Activity Not Found" 오류 (0) | 2021.09.07 |
Android에서 프로그래밍 방식으로 앱 언어 변경 (0) | 2021.09.07 |