在AsyncTask完成后我该怎么做

时间:2015-02-13 10:05:18

标签: android android-asynctask

当AsyncTask完成工作时,我想调用一个方法onResume()。 AsyncTask没有嵌入到我的活动中 - 它们是单独的类,因此我无法在方法onResume()中调用方法onPostExecute()

如何等待AsyncTask结束调用方法onResume()

非常感谢你的回答,我解决了这个问题。

2 个答案:

答案 0 :(得分:1)

我认为你应该看一下onResume()方法的含义。

http://developer.android.com/training/basics/activity-lifecycle/starting.html

此方法由活动的生命周期调用,因此您不应在代码中调用此方法。如果你需要在活动的生命周期的这一点上制定一些逻辑,那就覆盖他们的竞争。

尽管如此,如果要在嵌入AsyncTask的类中调用Activity方法,可以将上下文或完整活动作为此类构造函数的参数传递。 看看这个答案:

How to call parent activity function from ASyncTask?

答案 1 :(得分:0)

你可以使用你可以在后执行上实现的界面

示例:

public class DownloadFileUsingAsync  extends AsyncTask<String, String,  String> {


public interface OnTaskCompleted {
    void onTaskCompleted(String str);
    void onTaskFailure(String str);
}
private OnTaskCompleted listener;

public DownloadFileUsingAsync(OnTaskCompleted listener,File folderPath,String fileName,
        String data, String method,
        int timeout) {
    this.listener = listener;

}

@Override
protected String doInBackground(String... params) {
    //doInBackground
}

@Override
protected void onPostExecute(String fileUrl) {
    if (listener != null) {
        listener.onTaskCompleted(fileUrl);
    }

}

@Override
protected void onPreExecute() {
}

protected void onProgressUpdate(Void... values) {
}

}

调用aynctask

     new DownloadFileUsingAsync(listener,folder,docname, null, "GET",
            10000).execute(docUrl);

在post执行后你可以像这样处理监听器:

   private OnTaskCompleted listener = new OnTaskCompleted() {
    //write here 

    }
    /**
     * onTaskFailure method for load base image failure callback.
     *
     */
    public void onTaskFailure(final String error) {
        //handle error

    }
};