将参数传递给AsyncTask
execute()
execute
我发现第一种方法更具可读性,但有时它在类型安全性方面缺乏灵活性,例如,如果你想传递一个字符串,一个整数和一个布尔值,似乎不清楚如何处理它。
public Result doInBackground(String... params) {
String param1 = params[0];
int param2 = Integer.valueOf(params[1]);
boolean param3 = Boolean.valueOf(params[2]);
// ...
}
字符串解析,将它放在Bundle
等等。总有一个解决方案,但我从语义/方法签名的角度来看这令人不快。任何替代方案?
答案 0 :(得分:1)
为什么不为示例创建类持有者
static Class Holder {
int i;
String s;
boolean b;
}
public Result doInBackground(Holder... params) {
Holder holder = params[0];
String holder.s;
// ...
}
然后通过execute()将它发送到doBackground()。 当我想发送到网络时,我做了很多次
这只是一个骄傲的例子。 希望它有所帮助。
答案 1 :(得分:0)