【问题标题】:Multiple input parameters for the method execute() of AsyncTaskAsyncTask 的 execute() 方法的多个输入参数
【发布时间】:2011-02-08 08:44:38
【问题描述】:

每个人。我在 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]);
}

谁能告诉我为什么execute()方法有2个输入参数

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

提前致谢!

【问题讨论】:

    标签: android android-asynctask


    【解决方案1】:

    这是我如何让它传递多个参数。你可以像 Boris 描述的那样做,但是如果你传递不同的类型呢?

    首先,像往常一样创建您的 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”并传递构造函数参数现在将分配 StartTask 类中的变量。

    【讨论】:

    • 我必须说的有趣的东西
    【解决方案2】:

    Params... params 读作Params[] params。您可以发送任意数量的参数。

    【讨论】:

    • 在调用 doInBackground() 时如何访问 Params [] 参数?
    • 知道了:传递多个 doInBackground(String... params): task.execute(uri, username, password, etc...);获取:返回 Login.getResponseXML(params[0], params[1], params[2], etc...);呵呵
    猜你喜欢
    • 2023-03-13
    • 2011-09-29
    • 2013-06-18
    • 1970-01-01
    • 1970-01-01
    • 2013-10-31
    • 1970-01-01
    • 2019-02-07
    • 1970-01-01
    相关资源
    最近更新 更多