在AsyncTask完成后执行某些操作



我正在开发一个android应用程序,该应用程序使用Jsoup来检索web内容。为了执行此操作,我使用了单独的AsyncTask类。我需要在AsyncTasks完成后显示检索到的结果。doInBackground方法将检索到的数据存储到Array中。

ScheduleExtractor scheduleExtractor = new ScheduleExtractor();
scheduleExtractor.execute();
if(myArray.length==0){
///
}else{
//show results
}

但是,当我在调用方法Asynctask.execute()之后尝试访问该数组时,该数组没有元素。那么,有没有办法确保在完成AsyncTask方法之后访问数组?非常感谢。

AsyncTasks作为名称表示执行异步作业,这意味着对execute()的调用在另一个线程中启动进程,而代码的其余部分在调用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
}
}
}

相关内容

  • 没有找到相关文章

最新更新