我使用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();