everyone. I have read on the android site the description of the excute() of AsyncTask:
public final AsyncTask<Params, Progress, Result> execute (Params... params)
But within my project, I have read the code like this:
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]);
}
Somebody can tell me why there are 2 input parameters for the execute() method?
Since according the specification, there should be only one input parameter.
Thanks in advance!
AsyncTask instances can only be used one time.
An asynchronous task is defined by a computation that runs on a background thread and whose result is published on the UI thread. An asynchronous task is defined by 3 generic types, called Params , Progress and Result , and 4 steps, called onPreExecute , doInBackground , onProgressUpdate and onPostExecute .
Here is how I got it to pass multiple parameters. You could do it as Boris described, but what if you pass different types?
First, create your AsyncTask as normal, but within it, create a constructor:
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;
}
}
Now, on your event or anything else, when you want to kick off the action you call your AsyncTask and pass as many parameters as you want.
ProgressDialog progress = new ProgressDialog(this);
progress.setMessage("Loading...");
String strAction = "this_is_a_string";
new StartTask(progress, strAction).execute(this);
You can see that calling "StartTask" and passing the constuctor parameters will now assign the variables within the StartTask class.
Read Params... params
as Params[] params
. You can send as many params as you want.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With