大家。我在android站点上读到了AsyncTask的excute()的描述:
public final AsyncTask<Params, Progress, Result> execute (Params... params)
但在我的项目中,我已经阅读了这样的代码:
private static final int JSON = 0;
private static final int NAME = 1;
@Override
protected String doInBackground(String... strData) {
FileOutputTask task = new FileOutputTask(context);
task.execute(strData[JSON], strData[NAME]);
}
有人可以告诉我为什么执行()方法有 2输入参数?
由于根据规范,应该只有一个输入参数。
提前致谢!
答案 0 :(得分:44)
以下是我如何传递多个参数。你可以像鲍里斯所描述的那样做,但是如果你传递不同的类型呢?
首先,正常创建AsyncTask,但在其中,创建一个构造函数:
private class StartTask extends AsyncTask<Context, Void, Boolean>
{
private ProgressDialog progress;
private String strAction="";
public StartTask(ProgressDialog progress, String Action)
{
this.progress = progress;
this.strAction = Action;
}
}
现在,在您的活动或其他任何事情上,当您想要启动操作时,您可以调用AsyncTask并传递任意数量的参数。
ProgressDialog progress = new ProgressDialog(this);
progress.setMessage("Loading...");
String strAction = "this_is_a_string";
new StartTask(progress, strAction).execute(this);
您可以看到调用“StartTask”并传递constuctor参数现在将在StartTask类中分配变量。
答案 1 :(得分:13)
将Params... params
视为Params[] params
。您可以根据需要发送尽可能多的参数。