我正在努力确保我考虑到避免用户出错的所有可能性。
我有一个实现接口的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意味着接口不会返回值?
提前感谢您的帮助。
答案 0 :(得分:2)
onPostExecute()
只要doInBackground()
返回就会运行,并且您没有明确取消任务(通过调用cancel()
实例上的AsyncTask
)。
从技术上讲,onPostExecute()
将在以下行成功执行之后被调用:
return results;
只要你的过程在此期间没有被杀死。
如果您已取消任务,则会调用onCancelled()
而不是onPostExecute()
。