将参数传递给Asyntask
问题描述:
我做了一个扩展Asynctask的普通类。每当我打电话给Asynctask,我有4个字符串,我必须作为asynctask中的参数传递,我可以根据字符串进行进一步处理。 是否有可能在asynctask中发送4个字符串?将参数传递给Asyntask
答
您可以在AsyncTask的构造函数中传递它们,如下所示:
public class ProcessTask extends AsyncTask<Void, Integer, String>{
String s1, s2, s3, s4;
public ProcessTask(String str1, String str2, String str3, String str4) {
// TODO Auto-generated constructor stub
s1 = str1;
s2 = str2;
s3 = str3;
s4 = str4;
}
@Override
protected void onPreExecute() {
// TODO Auto-generated method stub
//do something with strings
super.onPreExecute();
}
@Override
protected String doInBackground(Void... params) {
// TODO Auto-generated method stub
//your code
return null;
}
@Override
protected void onPostExecute(String result) {
// TODO Auto-generated method stub
super.onPostExecute(result);
}
}
电话为:
ProcessTask p =new ProcessTask(s1, s2, s3, s4);
p.execute();
希望这有助于。
答
一种方法是,您可以使用构造函数获取变量,并在创建对象时传递变量。 例如,
public class SapleAsynctask extends AsyncTask<Void, Void, Boolean> {
public SapleAsynctask(String s1, String s2, String s3, String s4) {
this.s1 = s1;
.
.
.
}
}
如果你想获得doInBackground()
同时调用asynctask.excecute([])
为此,你可以传递参数的数据,
public class SapleAsynctask extends AsyncTask<String, Void, Boolean> {
@Override
protected Boolean doInBackground(String... params) {
S1 = params[0];
s2 = params[1];
.
.
return false;
}
}
,并调用的AsyncTask使用
SapleAsynctask sapleAsynctask = new SapleAsynctask();
sapleAsynctask .excecute(new String[] {"s1", "s2", "s3", "s4"});
答
步骤1.在你的AsyncTask的doInBackground方法解析PARAMS那样:
public class MyAsyncTask extends AsyncTask<String, Void, Void> {
// ...
@Override
protected String doInBackground(String... params) {
String s1 = params[0];
String s2 = params[1];
// ...
return null;
}
步骤2.当执行的AsyncTask - 通过String []数组:
myAsyncTask.execute(new String[] {s1, s2, s3, s4});
附加信息。有时候您需要传递不同类型的参数对象。要做到这一点,你需要传递的对象[]数组是这样的:
myAsyncTask.execute(new Object[] {myObj1, s2, myObj3, s4});
和解析此数组中您的AsyncTask的doInBackground方法是这样的:使用doInBackground它
public class MyAsyncTask extends AsyncTask<String, Void, Void> {
// ...
@Override
protected String doInBackground(Object... params) {
MyObject myObj1 = (MyObject) params[0];
String s2 = (String) params[1];
// ...
return null;
}
通() – 2014-08-27 08:41:46