转换异步任务参数

时间:2015-12-04 07:11:23

标签: android string android-asynctask

我在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
}

3 个答案:

答案 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视为您喜欢的任何内容。