2014-04-07 1 views
-2

doInBackground() 메소드의 반환 값을 가져 오는 것이 가능합니까?asynctask의 반환 값을 가져 오겠습니까?

JSONArray response = new SupportFunctions.executeURLWithResponse().execute(url); 

그것은 내게 말해이 같은

Description Resource Path Location Type 
Type mismatch: cannot convert from AsyncTask<String,Void,JSONArray> to JSONArray   ContactFunctions.java /BuddyCheck/src/com/pthuermer/buddycheck line 138 Java Problem 

뭔가?

+1

설명서를 읽으려고 했습니까? – njzk2

+1

작업이 별도의 파일에 있다면 당신은'인터페이스'를 사용할 수 있습니다. [여기 예제입니다] (http://stackoverflow.com/questions/18517400/inner-class-can-access-but-not-update-values-asynctask/18517648#18517648) 그렇지 않으면 값을 업데이트하거나 함수는'onPostExecute()'에 값을 설정합니다. – codeMagic

+0

codeMagic이 맞습니다.'void @ 012rideonPostExecute (결과 result)' – motoku

답변

0

비동기 작업이 완료되면 클래스 또는 전역 변수에 응답을 설정하고 변수를 설정할 수 있습니다. 대부분의 작업은 onPostExecute를 재정의해야합니다. 방법 -

Get returned JSON from AsyncTask

1

그것은 doInBackground()의 반환 값을 잡을 수있다?

시도하는 방식대로하지 마십시오.

현재 스레드를 차단하고 비동기 작업이 완료 될 때까지 대기 할 수있는 get() 메서드가 있습니다. 일반적으로 당신이 원하는 것이 아닙니다 - 당신은 구체적으로 으로 비동기 적으로 수행해야합니다 (그렇지 않은 경우 왜 AsyncTask입니까?).

JSONArray 응답이 필요한 코드를 onPostExecute() 또는 onPostExecute()에 의해 실행될 다른 방법으로 이동하십시오.

+0

URL에서 JSON 응답을 가져 오는 유일한 방법이기 때문에 asynctask를 사용하고 있습니까? – user3432220

+0

@ user3432220 아니요. 백그라운드 스레드에서이 작업을 수행해야합니다 (꼭해야합니다).하지만이 유형의 작업에 자주 사용 되긴하지만, AsyncTask를 사용해야한다는 것은 아닙니다. [여기] (http://android-developers.blogspot.com/2009/05/painless-threading.html) 및 [here] (http://developer.android.com/guide/components/)에 대한 글을 읽어야합니다. processes-and-threads.html) – codeMagic

+0

@ user3432220 : "URL에서 JSON 응답 받기"백그라운드 스레드를 사용해야합니다. AsyncTask는 백그라운드 스레드 주위 래퍼입니다. 그러나 배경 스레드가 필요한 이유는 네트워크 I/O를 기다리는 기본 응용 프로그램 스레드를 묶어 두지 않기 때문입니다. 'onPostExecute()'에서'AsyncTask' 백그라운드 작업의 결과를 처리하십시오. 그것이 거기에있는 이유입니다. – CommonsWare

관련 문제