1
인터넷 연결이 가능한 경우 내 앱이 제대로 작동합니다. 그러나 인터넷이 없으면 NetworkOnMainThreadException
을 제공합니다. 네트워킹 코드를 실행하려면 AsyncTask
을 사용하고 있습니다. JSoup을 사용하여 일부 긁어 모으기를 수행합니다.인터넷이없는 경우 메인 스레드 예외의 네트워크
Logcat 출력은 다음과 같습니다. 도움이나 조언을 주시면 감사하겠습니다.
05-14 23:52:47.258: E/AndroidRuntime(21329): FATAL EXCEPTION: main
05-14 23:52:47.258: E/AndroidRuntime(21329): android.os.NetworkOnMainThreadException
05-14 23:52:47.258: E/AndroidRuntime(21329): at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1126)
05-14 23:52:47.258: E/AndroidRuntime(21329): at java.net.InetAddress.lookupHostByName(InetAddress.java:385)
05-14 23:52:47.258: E/AndroidRuntime(21329): at java.net.InetAddress.getAllByNameImpl(InetAddress.java:236)
05-14 23:52:47.258: E/AndroidRuntime(21329): at java.net.InetAddress.getAllByName(InetAddress.java:214)
05-14 23:52:47.258: E/AndroidRuntime(21329): at libcore.net.http.HttpConnection.<init>(HttpConnection.java:70)
05-14 23:52:47.258: E/AndroidRuntime(21329): at libcore.net.http.HttpConnection.<init>(HttpConnection.java:50)
05-14 23:52:47.258: E/AndroidRuntime(21329): at libcore.net.http.HttpConnection$Address.connect(HttpConnection.java:340)
05-14 23:52:47.258: E/AndroidRuntime(21329): at libcore.net.http.HttpConnectionPool.get(HttpConnectionPool.java:87)
05-14 23:52:47.258: E/AndroidRuntime(21329): at libcore.net.http.HttpConnection.connect(HttpConnection.java:128)
05-14 23:52:47.258: E/AndroidRuntime(21329): at libcore.net.http.HttpEngine.openSocketConnection(HttpEngine.java:315)
05-14 23:52:47.258: E/AndroidRuntime(21329): at libcore.net.http.HttpEngine.connect(HttpEngine.java:310)
05-14 23:52:47.258: E/AndroidRuntime(21329): at libcore.net.http.HttpEngine.sendSocketRequest(HttpEngine.java:289)
05-14 23:52:47.258: E/AndroidRuntime(21329): at libcore.net.http.HttpEngine.sendRequest(HttpEngine.java:239)
05-14 23:52:47.258: E/AndroidRuntime(21329): at libcore.net.http.HttpURLConnectionImpl.connect(HttpURLConnectionImpl.java:80)
05-14 23:52:47.258: E/AndroidRuntime(21329): at org.jsoup.helper.HttpConnection$Response.execute(HttpConnection.java:408)
05-14 23:52:47.258: E/AndroidRuntime(21329): at org.jsoup.helper.HttpConnection$Response.execute(HttpConnection.java:393)
05-14 23:52:47.258: E/AndroidRuntime(21329): at org.jsoup.helper.HttpConnection.execute(HttpConnection.java:159)
05-14 23:52:47.258: E/AndroidRuntime(21329): at org.jsoup.helper.HttpConnection.get(HttpConnection.java:148)
05-14 23:52:47.258: E/AndroidRuntime(21329): at net.tuxv.mississaugabusses.data.Scraper.getStops(Scraper.java:60)
05-14 23:52:47.258: E/AndroidRuntime(21329): at net.tuxv.mississaugabusses.data.Route.scrapeStops(Route.java:50)
05-14 23:52:47.258: E/AndroidRuntime(21329): at net.tuxv.mississaugabusses.data.Route.getStops(Route.java:38)
05-14 23:52:47.258: E/AndroidRuntime(21329): at net.tuxv.mississaugabusses.RouteActivity$ScrapeDataTask.onPostExecute(RouteActivity.java:150)
05-14 23:52:47.258: E/AndroidRuntime(21329): at net.tuxv.mississaugabusses.RouteActivity$ScrapeDataTask.onPostExecute(RouteActivity.java:130)
05-14 23:52:47.258: E/AndroidRuntime(21329): at android.os.AsyncTask.finish(AsyncTask.java:631)
05-14 23:52:47.258: E/AndroidRuntime(21329): at android.os.AsyncTask.access$600(AsyncTask.java:177)
05-14 23:52:47.258: E/AndroidRuntime(21329): at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:644)
05-14 23:52:47.258: E/AndroidRuntime(21329): at android.os.Handler.dispatchMessage(Handler.java:99)
05-14 23:52:47.258: E/AndroidRuntime(21329): at android.os.Looper.loop(Looper.java:213)
05-14 23:52:47.258: E/AndroidRuntime(21329): at android.app.ActivityThread.main(ActivityThread.java:4787)
05-14 23:52:47.258: E/AndroidRuntime(21329): at java.lang.reflect.Method.invokeNative(Native Method)
05-14 23:52:47.258: E/AndroidRuntime(21329): at java.lang.reflect.Method.invoke(Method.java:511)
05-14 23:52:47.258: E/AndroidRuntime(21329): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:809)
05-14 23:52:47.258: E/AndroidRuntime(21329): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:576)
05-14 23:52:47.258: E/AndroidRuntime(21329): at dalvik.system.NativeStart.main(Native Method)
관련 코드를 게시하십시오. 당신은 여전히 HttpUrlConnection을 설정할 때 어딘가에 메인 스레드에서 인터넷에 액세스하고 있습니다. 주소 조회는 네트워크 작업이라는 것을 명심하십시오. 인터넷을 사용할 때 호스트 이름이 캐시되지만 가능성이 없을 때 캐시 된 IP를 업데이트하기 위해 "나간다"는 시도가 있습니다. – 323go
'AsyncTask'를 게시하고 어떻게 호출 할 수 있습니까? 그리고 아마도'getStops()'메쏘드 – codeMagic
stacktrace에 따르면, 여러분은'onPostExecute'에서 네트워크 연산을 수행하고 있다고 생각합니다. UI 쓰레드에서 실행되기 때문에,이 예외가 발생합니다. pls post relavent code – Pragnani