2012-10-31 7 views
0

다음 세 줄의 코드가 있습니다.비동기 작업 완료 후 코드 만 실행

Line 1 : GetBitMapFromURL gbmap = new GetBitMapFromURL(); //Obtain thumbnail bitmap 
Line 2 : gbmap.execute(applicationThumbNailURL); 
Line 3 : applicationThumbnailBitMap = gbmap.returnBitmap(); 

비동기 작업의 onPostExecute가 실행 된 후에 만 ​​GetBitMapFromURL 행 3이 실행되기를 원합니다.

+3

이유를 설명해주십시오. 왜 그것을 onPostExecute 콜백에 넣을 수 없습니까? – Simon

+0

@ Simon 다른 작업을 수행하기 위해 동일한 비동기 작업을 사용하고 있습니다. –

+1

http://stackoverflow.com/questions/10048958/android-calling-asynctask-right-after-an-another-finished 및 http://stackoverflow.com/questions/7494515/android-can-i-chain-async 순차 - 시작 - 하나 - - - 후 - 이전 -로 – user1690588

답변

3

GetBitMapFromURL에서 콜백을 생성하십시오.

public class GetBitMapFromURL extends AsyncTask<Void, Void, Void> { 

    private GetBitMapFromURLCallback mCallback = null; 

    public WebService(GetBitMapFromURLCallback callback) { 
     mCallback = callback; 
    } 

    @Override 
    protected Boolean doInBackground(Void... params) { 
     // ... 
    } 

    @Override 
    protected void onPostExecute(Boolean result) { 
     super.onPostExecute(result); 

     if (mCallback != null) { 
      mCallback.onGetBitMapFromURLComplete(this); 
     } 
    } 

    public interface GetBitMapFromURLCallback { 

     public void onGetBitMapFromURLComplete(GetBitMapFromURL getBitMapFromUrl); 
    } 
} 

public class MyActivity extends Activity implements GetBitMapFromURLCallback { 

    // ... 

    public void onGetBitMapFromURLComplete(GetBitMapFromURL getBitMapFromUrl) { 
     // This code will get called the moment the AsyncTask finishes 
    } 
} 

귀하의 활동에이 콜백과 onGetBitMapFromURLComplete()을 구현하게하십시오.

+0

그래서 기본적으로 GetBitMapFromURLCallback 구현에서 3 행을 실행하는 것을 의미합니다. –

+1

내 코드가 확장되었습니다. – shkschneider

관련 문제