我在AsyncTask
类中有一个方法,我想重用它。但它使用 String ... url 类型的对象,可以作为url [0],url [1]
要重复使用此功能,我需要创建一个Type String ... 或的对象 将String ...转换为String []
我没有找到任何关于String的文档...
@Override
protected String doInBackground(String... url) {
Thread.currentThread().setName("MetaDataDownloader");
String jsonStr=metadataDownloader(url);
//this uses param as url[0] and so on
}
答案 0 :(得分:2)
这是因为设计中的AsyncTask可以接收多个参数(因此varargs
...)。
像这样改变你的方法:
@Override
protected String doInBackground(String... urls) {
Thread.currentThread().setName("MetaDataDownloader");
// if you want to handle all URLs
if (urls != null) {
for (String url : urls) {
String jsonStr=metadataDownloader(url);
}
}
}
答案 1 :(得分:0)
您可以在异步任务中创建构造函数并传递您想要的参数。不要在doInBackground中使用参数。
答案 2 :(得分:0)
您可以查看此Java Document。它是任意数量的参数。
您可以使用名为varargs的构造将任意数量的值传递给方法。当您不知道将多少特定类型的参数传递给该方法时,您可以使用varargs。它是手动创建数组的快捷方式(前一种方法可能使用了varargs而不是数组)。
要使用varargs,您可以通过省略号(三个点,...),一个空格和参数名称来跟踪最后一个参数的类型。然后可以使用任意数量的参数调用该方法,包括无参数。
- >要使用您的doInBackground(String... url)
,只需将其视为参数的array
,将其cast
视为您喜欢的任何内容。