[英]Doing something after AsyncTask finishes
我正在开发一个 android 应用程序,它使用 Jsoup 来检索 web 内容。 为了执行这个,我使用了单独的AsyncTask
类。 我需要在AsyncTask
完成后显示检索到的结果。 doInBackground
方法将检索到的数据存储到一个数组中。
ScheduleExtractor scheduleExtractor = new ScheduleExtractor();
scheduleExtractor.execute();
if(myArray.length==0){
///
}else{
//show results
}
但是,当我在调用方法Asynctask.execute()
后尝试访问数组时,数组没有元素。 那么,有没有办法确保在完成AsyncTask
方法后才能访问数组? 谢谢你。
顾名思义, AsyncTask
代表您是否异步工作,这意味着对execute()
的调用在不同的线程中启动进程,而代码的 rest 在调用execute()
后立即在您自己的线程上继续运行。
如果您希望AsyncTask
有最终结果,您应该重写onPostExecute(Result)
方法并在那里检查数组的长度。 这是一个简单的示例(假设最终结果类型是int[]
:
class ScheduleExtractor extends AsyncTask<Void, Void, int[]> {
@Override
protected int[] doInBackground(Void... params) {
// Process your retrieved data and return the result here
}
@Override
protected void onPostExecute(int[] arrayResult) {
if(arrayResult.length==0) {
// Your code here
} else {
// Show results
}
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.