我使用AsyncTask加载作为内部类实现的操作。

onPreExecute()中,我显示一个加载对话框,然后再次将其隐藏在onPostExecute()中。但是对于某些加载操作,我事先知道它们将很快完成,因此我不想显示加载对话框。

我想通过一个可以传递给onPreExecute()的 bool 参数来表明这一点,但是显然出于某种原因onPreExecute()不接受任何参数。

显而易见的解决方法可能是在我的AsyncTask或外部类中创建一个成员字段,在每次加载操作之前都必须设置该成员字段,但这似乎不是很优雅。有一个更好的方法吗?

最佳答案

您可以覆盖构造函数。就像是:

private class MyAsyncTask extends AsyncTask<Void, Void, Void> {

    public MyAsyncTask(boolean showLoading) {
        super();
        // do stuff
    }

    // doInBackground() et al.
}

然后,在调用任务时,请执行以下操作:
new MyAsyncTask(true).execute(maybe_other_params);

编辑:这比创建成员变量更有用,因为它简化了任务调用。将上面的代码与:
MyAsyncTask task = new MyAsyncTask();
task.showLoading = false;
task.execute();

10-08 18:38