如何从onPostExecute内部重新启动AsyncTask

时间:2012-12-06 09:17:36

标签: android android-asynctask

如果onPostExecute无法从服务器加载数据,我想在Dialoag框中显示Reload按钮。那么如何在AsyncTask中重新启动或执行类似的操作呢?

3 个答案:

答案 0 :(得分:3)

再次调用它:

new mAsyncTask.execute("");

onPostExecute 的某些if块中,未成功加载数据。

答案 1 :(得分:0)

将它放在Button的onClickListener中:

if(task.cancel(true)) {
    YourTask task = new YourTask(this);
    task.execute();
}

因此,在按钮单击时,您将尝试取消当前执行的任务并开始一个新任务。

答案 2 :(得分:0)

要重新启动AsyncTask,您需要创建asynctask的新实例并调用execute();

@Override
protected void onPostExecute(Response result) {
    super.onPostExecute(result);
    if (your_condition) {

        AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(this);
        alertDialogBuilder.setMessage("Some error has occured .! \nDo you want ro retry?");
        alertDialogBuilder.setPositiveButton("yes",
                new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface arg0, int arg1) {

                        new YourAsyncTask().execute();
                    }
            });

        alertDialogBuilder.setNegativeButton("No", 
        new DialogInterface.OnClickListener() {
                Override
                public void onClick(DialogInterface dialog, int which) {
                // Perform action.
                }   
    });

        AlertDialog alertDialog = alertDialogBuilder.create();
        alertDialog.show();
    }
}