作者热门文章
- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
有相关问题,如How can I pass in 2 parameters to a AsyncTask class? ,但我遇到了徒劳地尝试将多个原语作为参数传递给 AsyncTask 的困难,所以我想分享我的发现。现有的问题和答案中没有捕捉到这种微妙之处,因此我想帮助遇到与我相同的问题的任何人,并为他们减轻痛苦。
问题是这样的:我有多个 primitive 参数(例如两个长整数),我想将它们传递给 AsyncTask 以在后台执行 - 怎么做? (我的答案……在为此苦苦挣扎了一段时间之后……可以在下面找到。)
最佳答案
只需将您的原语包装在一个简单的容器中,并将其作为参数传递给 AsyncTask
,如下所示:
private static class MyTaskParams {
int foo;
long bar;
double arple;
MyTaskParams(int foo, long bar, double arple) {
this.foo = foo;
this.bar = bar;
this.arple = arple;
}
}
private class MyTask extends AsyncTask<MyTaskParams, Void, Void> {
@Override
protected void doInBackground(MyTaskParams... params) {
int foo = params[0].foo;
long bar = params[0].bar;
double arple = params[0].arple;
...
}
}
这样调用它:
MyTaskParams params = new MyTaskParams(foo, bar, arple);
MyTask myTask = new MyTask();
myTask.execute(params);
关于android - 如何将多个原始参数传递给 AsyncTask?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12069669/
我是一名优秀的程序员,十分优秀!