2012-11-10 3 views
0

그래, 여기 StackOverflow에서 많은 질문을 읽었지만 여전히 이해할 수 없으므로 새로운 질문을 열었습니다.안드로이드는 인터넷에서 데이터를 가져옵니다. (android.os.NetworkOnMainThreadException)

나는 인터넷에 연결하고 json을 문자열로 가져 오는 클래스를 만들었습니다. 그것은 정상적인 Java 응용 프로그램에서 잘 작동하지만 내 안드로이드 프로젝트에서 작동시키지 못합니다. 내가 AsyncTask를를 사용할 필요가 나의 이해에 따라서

android.os.NetworkOnMainThreadException

을하지만 그것으로 제 기능을 포장하는 방법을 모른다 :

난 다음 오류 받고 있어요.

기능은 다음과 같습니다

public static String get(String url){ 
    //connect and get data to string 
    // return string 
} 

나는 그것이 정상 JavaApplication에서 미세하지만 안드로이드 프로젝트에서 작동 말했듯이.

도움을 청하십시오!

답변

0

http://developer.android.com/reference/android/os/AsyncTask.html

private class DownloadFilesTask extends AsyncTask<URL, Integer, Long> { 
} 

귀하의 기능은이 클래스에서 2 개의 별도 기능으로 구분해야합니다 "GET"

당신은

에 넣어에서 얻을 싶은
doInBackground 

그리고받는 데이터로 수행 할 작업

onPostExecute 
+0

감사! 내 문제를 해결했다. –

0

나는 당신이 AndroidHttpClient ->을 사용하므로 UI ​​스레드에서 네트워크 작업을 수행하려고 시도 할 수 없다는 것을 이해하고 있으므로 ->이 목적을 위해 별도의 스레드를 생성하십시오. 이 경우 AsynchTask, Thread + Handler 또는 HandlerThread을 사용하거나 여기 java.util.concurrent 패키지로 실험 해 볼 수 있습니다. 샘플에서

NetworkOnMainThreadException | Android Developers 
developer.android.com/... - 
Class Overview. The exception that is thrown when an application attempts to perform a networking operation on its main thread. This is only thrown for ... 
+0

어쨌든 URLConnection의 –

+0

을 사용하고 있습니다를이 목적 – pvllnspk

+0

활동 클래스는 실행 가능한 구현하는 경우 FOT UI 스레드를 사용하지 않을, 당신은'실행을 사용하여 작업을 네트워킹 않는 경우()'메소드를 호출하고 처리기를 호출하면'Runnable'이이 활동과 분리되면 여전히'NetworkOnMainThreadException'이 발생합니까? –

관련 문제