AsyncTask方法execute()的多个输入参数

时间:2011-02-08 08:44:38

标签: android android-asynctask

大家。我在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输入参数

由于根据规范,应该只有一个输入参数。

提前致谢!

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。您可以根据需要发送尽可能多的参数。