gpt4 book ai didi

java - AsyncTask 什么时候不调用 onPostExecute()?

转载 作者:搜寻专家 更新时间:2023-11-01 09:41:02 24 4
gpt4 key购买 nike

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

我有一个 AsyncTask,它实现了一个接口(interface),并在 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 意味着接口(interface)不会返回值?

预先感谢您的帮助。

最佳答案

只要 doInBackground() 返回并且您没有明确取消任务(通过调用 cancel()),

onPostExecute() 就会运行在你的 AsyncTask 实例上)。

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

return results;

只要您的进程在此期间没有被杀死。

如果您取消了任务,将调用 onCancelled() 而不是 onPostExecute()

关于java - AsyncTask 什么时候不调用 onPostExecute()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39802852/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com