2013-07-10 2 views
0

strReturnedAddress는 약입니다. 계산하는 데 3 초가 걸릴 수 있지만 0.5 초 정도 빠릅니다. 이 라인은 라인이 라인코드 행을 실행하기 위해 프로세스가 완료 될 때까지 대기

if(!(strReturnedAddress == null)){ 
     test.setText(strReturnedAddress); 

내가 원하는에게 제공

new GetCurrentCity().execute(); 

직후

계산을 트리거 그 진술이 strReturnedAddress 계산되는 순간을 실행하는 경우.

어떻게하면됩니까?

+3

AsyncTask 클래스에'onPostExecute'라는 메서드가 있습니다. – tyczj

답변

2

것, 당신은 onPostExecute()에 코드를 넣을 수 있습니다. onPostExecute은 주 스레드에서 실행되고 doInBackGround()의 반환 값이 매개 변수로 전달됩니다.

또 다른 방법은 결과를 기다리는 task.execute().get()입니다. 그러나 이것은 Asyntask의 목적을 무효화합니다.

0

GetCurrentCity().execute();을 (를) 스레드로 변경할 수 있습니다. 그렇다면, 당신은 할 수 :

Thread blah= GetCurrentCity(); 
blah.run(); 
blah.join(); 
if(!(strReturnedAddress == null)){ 
    test.setText(strReturnedAddress); 
} 

을하지만 doInBackGround() 후 실행 결과가 필요한 경우 그 자멸 (코멘트는 표시 등)

+2

스레드를 사용하는 목적에 위배됩니다. – SLaks

+0

슬랙스 (Slaks)와 마찬가지로, 이렇게하면 스레드를 사용할 필요가 없습니다. 또한 스레드를 실행하지 않으면 시작합니다. –

+0

네 말이 맞아. @ 가베 신. 그래도 문제는 그가 AsyncTask를 잘못 사용하고 있음을 나타냅니다. 그렇지 않습니까? – DigCamara

관련 문제