2013-05-15 1 views
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) 
+3

관련 코드를 게시하십시오. 당신은 여전히 ​​HttpUrlConnection을 설정할 때 어딘가에 메인 스레드에서 인터넷에 액세스하고 있습니다. 주소 조회는 네트워크 작업이라는 것을 명심하십시오. 인터넷을 사용할 때 호스트 이름이 캐시되지만 가능성이 없을 때 캐시 된 IP를 업데이트하기 위해 "나간다"는 시도가 있습니다. – 323go

+0

'AsyncTask'를 게시하고 어떻게 호출 할 수 있습니까? 그리고 아마도'getStops()'메쏘드 – codeMagic

+0

stacktrace에 따르면, 여러분은'onPostExecute'에서 네트워크 연산을 수행하고 있다고 생각합니다. UI 쓰레드에서 실행되기 때문에,이 예외가 발생합니다. pls post relavent code – Pragnani

답변

1

스택 추적은 android.os.NetworkOnMainThreadException가 finish()에서 일어나고 말한다. 나는 그 방법을 인식하지 못하지만, onPostExecute()에서 네트워킹을하고있을 가능성이 있습니까?

"android.os.NetworkOnMainThreadException"은 정확히 무엇을 말합니다.