AsyncTask什么时候没有调用onPostExecute()?

时间:2016-10-01 03:53:21

标签: java android android-asynctask

我正在努力确保我考虑到避免用户出错的所有可能性。

我有一个实现接口的AsyncTask,并在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);
    }
}

是否有任何时候不会调用onPostExecute意味着接口不会返回值?

提前感谢您的帮助。

1 个答案:

答案 0 :(得分:2)

onPostExecute()只要doInBackground()返回就会运行,并且您没有明确取消任务(通过调用cancel()实例上的AsyncTask)。

从技术上讲,onPostExecute()将在以下行成功执行之后被调用:

return results;

只要你的过程在此期间没有被杀死。

如果您已取消任务,则会调用onCancelled()而不是onPostExecute()