我正在开发一个android应用程序,该应用程序使用Jsoup来检索web内容。为了执行此操作,我使用了单独的AsyncTask
类。我需要在AsyncTask
s完成后显示检索到的结果。doInBackground
方法将检索到的数据存储到Array中。
ScheduleExtractor scheduleExtractor = new ScheduleExtractor();
scheduleExtractor.execute();
if(myArray.length==0){
///
}else{
//show results
}
但是,当我在调用方法Asynctask.execute()
之后尝试访问该数组时,该数组没有元素。那么,有没有办法确保在完成AsyncTask
方法之后访问数组?非常感谢。
AsyncTask
s作为名称表示执行异步作业,这意味着对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
}
}
}