2016-10-01 3 views
2

나는 사용자를 위해 오류를 피할 수있는 모든 가능성을 고려해야한다. onPostExecute 인터페이스를 의미 호출 할 수 없습니다만한 시간이 있습니까AsyncTask onPostExecute()가 호출되지 않은 경우?

public class GetVideoInfoFromDataBase extends AsyncTask { 

    Context context; 
    private AsyncInterface asyncInterface; 

    // Paginated list of results for alarm database scan 
    static PaginatedScanList<AlarmDynamoMappingAdapter> results; 

    // The DynamoDB object mapper for accessing DynamoDB. 
    private final DynamoDBMapper mapper; 

    public GetVideoInfoFromDataBase(Context context, AsyncInterface asyncInterface){ 
     mapper = AWSMobileClient.defaultMobileClient().getDynamoDBMapper(); 
     this.context = context; 
     this.asyncInterface = asyncInterface; 

    } 

    @Override 
    protected Object doInBackground(Object[] params) { 
     System.out.println("The backgrond stuff is working 1"); 
     DynamoDBScanExpression scanExpression = new DynamoDBScanExpression(); 
     results = mapper.scan(AlarmDynamoMappingAdapter.class, scanExpression); 
     return results; 
    } 

    @Override 
    public void onPostExecute(Object obj) { 

      asyncInterface.response((PaginatedScanList<AlarmDynamoMappingAdapter>)obj); 
    } 
} 

않을 것이다 :

나는 인터페이스를 구현하고 아래로 AsyncTask를의 onPostExecute에서 호출 클래스에 대한 응답을 반환하는 AsyncTask를이 값을 돌려 주시겠습니까?

미리 도움을 주셔서 감사합니다.

+1

'onPostExecute'를 호출해야합니다. 왜'system.out.println'을'onpostExecute'에 넣었는지 확인해보세요. –

+0

괜찮습니다. –

+0

나는 그것이 부르지 않게하는 상황이 있는지 묻는다. –

답변

2

onPostExecute()doInBackground() 수익률만큼 실행하고 당신이 (당신의 AsyncTask 인스턴스에서 cancel()를 호출하여) 명시 적으로 작업을 취소하지 않았다. 기술적으로, onPostExecute()이 후 (그리고 경우) 불려가는

다음 줄을 성공적으로 실행됩니다 :

return results; 

을만큼 프로세스가 그 사이에 살해되지 않는.

작업을 취소 한 경우 onPostExecute() 대신 onCancelled()이 호출됩니다.

관련 문제