2015-07-15 2 views
0

Я пытаюсь понять пример кода Googles для класса AsynckTask. В строке private class DownloadFilesTask extends AsyncTask Я предполагаю, что Params - это URL-адрес типа, Progress is type integer и Result - тип long.Попытка понять Androids Класс AsynckTask

Я не понимаю следующую строку защищенной Long doInBackground (URL ... URLs)

Google, пример код:

private class DownloadFilesTask extends AsyncTask<URL, Integer, Long> { 
    protected Long doInBackground(URL... urls) { 
     int count = urls.length; 
     long totalSize = 0; 
     for (int i = 0; i < count; i++) { 
      totalSize += Downloader.downloadFile(urls[i]); 
      publishProgress((int) ((i/(float) count) * 100)); 
      // Escape early if cancel() is called 
      if (isCancelled()) break; 
     } 
     return totalSize; 
    } 

    protected void onProgressUpdate(Integer... progress) { 
     setProgressPercent(progress[0]); 
    } 

    protected void onPostExecute(Long result) { 
     showDialog("Downloaded " + result + " bytes"); 
    } 

}

+6

«Я не понимаю, следующую строку защищенному Long doInBackground (URL ... URLs)» - пожалуйста, объясните более подробно, что вы не понимаете. Это объявление метода в классе Java, которое использует [параметр varargs] (http://java-demos.blogspot.in/2012/12/java-varargs-tutorial.html). – CommonsWare

+0

Вы имеете в виду тот факт, что URL-адрес является списком аргументов? http://www.deitel.com/articles/java_tutorials/20060106/VariableLengthArgumentLists.html – roostertech

ответ

0

Я не понимаю следующую строку защищенному Long doInBackground (URL ... URLs)

Это означает: если вы будете выполнения задачи вы можете передать в AsynckTask.execute() метод, как много ссылок, как вам нужно:

new DownloadFilesTask().execute(); 

или

new DownloadFilesTask().execute(url); 

или

new DownloadFilesTask().execute(url_1, url_2); 

и так далее ...

0

Если вы запутались параметр (URL... urls), я предлагаю вам видеть this question. В принципе, это означает, что в качестве параметров для метода могут использоваться ноль или более URL-адресов.

Смежные вопросы