我制作了一个扩展Asynctask的通用类。每当我调用Asynctask时,我有4个字符串,我必须在asynctask中作为参数传递,我可以根据字符串进行进一步处理。 是否可以在asynctask中发送4个字符串?
答案 0 :(得分:1)
一种方法是,您可以使用构造函数获取变量,在创建对象时传递变量。 例如,
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;
}
}
使用
调用asynctaskSapleAsynctask sapleAsynctask = new SapleAsynctask ();
sapleAsynctask .excecute(new String[] {"s1", "s2", "s3", "s4"});
答案 1 :(得分:1)
第1步。在你的AsyncTask的doInBackground方法中解析这样的参数:
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});
其他信息。有时您需要传递不同类型的参数对象。要实现这一点,您需要传递Object []数组,如下所示:
myAsyncTask.execute(new Object[] {myObj1, s2, myObj3, s4});
并在AsyncTask的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;
}
答案 2 :(得分:0)
您可以在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();
希望这有帮助。