마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

AsyncTask 관련 질문이요!

0 추천

검색하고 싶은 버스 번호를 입력 받아서 해당 번호를 갖고 있는 버스를 출력해주는 어플을 만들고 있습니다.

AsyncTask를 이용하고 있고, 파서는 XMLPullParser를 이용하고 있습니다.

 

 

protected InputStream doInBackground(String... param)
    {
        URL url;
        HttpURLConnection conn;
        InputStream data = null;

        try {
            url = new URL("url값" + param[0]);
            Log.i("String URL", url.toString());

            conn = (HttpURLConnection) url.openConnection();

            try {
                conn.connect();
                data = conn.getInputStream();
            } catch (IOException e) {
                e.printStackTrace();
            } 
        } catch (MalformedURLException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } catch (Exception e) {
            e.printStackTrace();
        }

        return data;
    }

 

isDataSchedulerEnabled():false
11-21 23:06:32.981 8112-8112/csbeti7.internetparsertest W/System.err: Invalid stream or encoding: android.os.NetworkOnMainThreadException (position:START_DOCUMENT null@1:1 in java.io.InputStreamReader@429b66c0) caused by: android.os.NetworkOnMainThreadException; nested exception is:
11-21 23:06:32.981 8112-8112/csbeti7.internetparsertest W/System.err: android.os.NetworkOnMainThreadException
11-21 23:06:32.981 8112-8112/csbeti7.internetparsertest W/System.err:     at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1148)
11-21 23:06:32.981 8112-8112/csbeti7.internetparsertest W/System.err:     at libcore.io.BlockGuardOs.recvfrom(BlockGuardOs.java:163)
11-21 23:06:32.991 8112-8112/csbeti7.internetparsertest W/System.err:     at libcore.io.IoBridge.recvfrom(IoBridge.java:555)
11-21 23:06:32.991 8112-8112/csbeti7.internetparsertest W/System.err:     at java.net.PlainSocketImpl.read(PlainSocketImpl.java:489)
11-21 23:06:32.991 8112-8112/csbeti7.internetparsertest W/System.err:     at java.net.PlainSocketImpl.access$000(PlainSocketImpl.java:46)
11-21 23:06:32.991 8112-8112/csbeti7.internetparsertest W/System.err:     at java.net.PlainSocketImpl$PlainSocketInputStream.read(PlainSocketImpl.java:241)
11-21 23:06:32.991 8112-8112/csbeti7.internetparsertest W/System.err:     at java.io.BufferedInputStream.read(BufferedInputStream.java:283)
11-21 23:06:32.991 8112-8112/csbeti7.internetparsertest W/System.err:     at com.android.okhttp.internal.http.HttpTransport$ChunkedInputStream.read(HttpTransport.java:441)
11-21 23:06:32.991 8112-8112/csbeti7.internetparsertest W/System.err:     at java.io.InputStreamReader.read(InputStreamReader.java:233)
11-21 23:06:32.991 8112-8112/csbeti7.internetparsertest W/System.err:     at org.kxml2.io.KXmlParser.fillBuffer(KXmlParser.java:1506)
11-21 23:06:32.991 8112-8112/csbeti7.internetparsertest W/System.err:     at org.kxml2.io.KXmlParser.peekCharacter(KXmlParser.java:1460)
11-21 23:06:32.991 8112-8112/csbeti7.internetparsertest W/System.err:     at org.kxml2.io.KXmlParser.setInput(KXmlParser.java:1735)
11-21 23:06:32.991 8112-8112/csbeti7.internetparsertest W/System.err:     at csbeti7.internetparsertest.MyAsyncTask.onPostExecute(MyAsyncTask.java:92)
11-21 23:06:32.991 8112-8112/csbeti7.internetparsertest W/System.err:     at csbeti7.internetparsertest.MyAsyncTask.onPostExecute(MyAsyncTask.java:23)
11-21 23:06:32.991 8112-8112/csbeti7.internetparsertest W/System.err:     at android.os.AsyncTask.finish(AsyncTask.java:632)
11-21 23:06:32.991 8112-8112/csbeti7.internetparsertest W/System.err:     at android.os.AsyncTask.access$600(AsyncTask.java:177)
11-21 23:06:32.991 8112-8112/csbeti7.internetparsertest W/System.err:     at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:645)
11-21 23:06:32.991 8112-8112/csbeti7.internetparsertest W/System.err:     at android.os.Handler.dispatchMessage(Handler.java:102)
11-21 23:06:32.991 8112-8112/csbeti7.internetparsertest W/System.err:     at android.os.Looper.loop(Looper.java:136)
11-21 23:06:32.991 8112-8112/csbeti7.internetparsertest W/System.err:     at android.app.ActivityThread.main(ActivityThread.java:5118)
11-21 23:06:32.991 8112-8112/csbeti7.internetparsertest W/System.err:     at java.lang.reflect.Method.invokeNative(Native Method)
11-21 23:06:32.991 8112-8112/csbeti7.internetparsertest W/System.err:     at java.lang.reflect.Method.invoke(Method.java:515)
11-21 23:06:32.991 8112-8112/csbeti7.internetparsertest W/System.err:     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:792)
11-21 23:06:32.991 8112-8112/csbeti7.internetparsertest W/System.err:     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:608)
11-21 23:06:32.991 8112-8112/csbeti7.internetparsertest W/System.err:     at dalvik.system.NativeStart.main(Native Method)

 

이런 오류가 뜹니다ㅠㅠ

 

url 주소는 시크릿키 값때문에 지웠고ㅠㅠ

로그에 나온 주소 값으로 들어가 봐도 접속이 잘되는데 왜 자꾸 연결이 안되는지 모르겠습니다ㅠㅠ

마일이 (240 포인트) 님이 2015년 11월 21일 질문

1개의 답변

0 추천
 
채택된 답변

xml 파싱 시 network 에 연결되어 하고 있는데 그게 main thread 에서 도나 봅니다. 그 파싱 부분도 asynctask 에서 돌리세요 

NetworkOnMainThreadException 에 대해서 검색하시구요

aucd29 (218,390 포인트) 님이 2015년 11월 23일 답변
마일이님이 2015년 11월 24일 채택됨
아ㅠㅠ 그런거였군요ㅠㅠ 감사합니다!
...