如何重用已经执行的asynctask?

时间:2014-03-27 07:06:21

标签: android android-asynctask

场景: 在activity1用户单击fileName。调用Activity 2并下载显示进度的文件。

Activity 2中存在一个asynctask,其工作是下载和打开文件。

AsyncTask在其各种方法中执行以下操作:

  • onPreExecute: - 打开进度条。

  • doInbackground: - 启动下载并发送进度更新

  • onPostExecute: - 处理doInBackground发送的各种返回值。

在下载时,它也会更新进度。

现在,进度条oncancelabletrue。因此当用户按下它时会返回上一个活动。

但是当用户再次在Activity1中按下相同的文件时,如果下载仍在进行,他应该再次看到进度条,并发布onPostExecute应该执行。

我该怎么办?

提前致谢。

1 个答案:

答案 0 :(得分:1)

创建Async任务的静态对象,并在恢复Activity

时检查其状态
static YourAsyncTask backgroundTask;

onCreate() / onResume()

if(backgroundTask == null)
{
    backgroundTask = new YourAsyncTask();
    backgroundTask.execute();
}
else
{
    if(backgroundTask.getStatus() == AsyncTask.Status.PENDING){
        // AsyncTask has not started yet
    }

    if(backgroundTask.getStatus() == AsyncTask.Status.RUNNING){
        // AsyncTask is currently doing work in doInBackground()
    }

    if(backgroundTask.getStatus() == AsyncTask.Status.FINISHED){
        // AsyncTask is done and onPostExecute was called
    }
}

希望这会有所帮助:)