繁体   English   中英

在 AsyncTask 完成后做某事

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM