I'm designing an application that frequently communicates to a web server for updates. Communication happens only when user requests. I found AsyncTask could be helpful here. So I modified one class to serve my application as AsyncTask.
I want to pass an url and http post parameters to anysc class's doInBackground process. I can't figure out how to do it.
Here's it-
public class GetXMLFromServer extends
AsyncTask< String, Void, String> {
private Context context;
GetXMLCallback gc = null;
ProgressDialog progressDialog;
public GetXMLFromServer(Context context, GetXMLCallback gc) {
this.context = context;
this.gc = gc;
progressDialog = new ProgressDialog(this.context);
}
protected void onPreExecute() {
progressDialog.setMessage("Fetching...");
progressDialog.show();
}
@Override
protected void onPostExecute(String result) {
gc.onSuccess(result);
progressDialog.dismiss();
}
@Override
protected String doInBackground(String... params) {
String response = "";
response=CustomHttpClient.executeHttpPost(params[0]);
return null;
}
//Confused how to pass URL and http post parameters to doInBackground().
}
I've one interface that is used to process response sent from onPostExecute(). It is as fallows.
package com.project.main.external;
public interface GetXMLCallback {
void onSuccess(String downloadedString);
void onFailure(Exception exception);
}
And here is my main activity that calls for http response --
public class UpdateList extends Activity implements GetXMLCallback {
//above line also throws error that interface methods are not implemented yet
//they are (few lines below) defined.
private TextView textView;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.list_layout);
textView = (TextView) findViewById(R.id.TextView01);
}
GetXMLCallback gc = new GetXMLCallback() {
public void onFailure(Exception exception) {
}
public void onSuccess(String downloadedString) {
textView.setText(downloadedString);
}
};
public void getUpdates(View view) {
GetXMLFromServer task = new GetXMLFromServer(UpdateList.this, gc);
task.execute(WebConstants.GET_UPDATES);
}
}
AsyncTask does already allow more parameters:
In your case call it like this:
task.execute("parameter_one","parameter_two","parameter_three");
In doInBackground you can get them with:
params[0]
params[1]
params[2]
And so on
Just notice that all parameters must be of the same Type, in your case String.
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