As Morrison said, la ...
sintaxis es para una variable lista longitud de argumentos (urls
mantiene más de un URL
).
Esto normalmente se usa para permitir a los usuarios de AsyncTask
hacer cosas como (en su caso) pasar más de una URL para que se busquen en segundo plano. Si sólo tiene una dirección URL, debe utilizar su DownloadFilesTask
así:
DownloadFilesTask worker = new DownloadFilesTask();
worker.execute(new URL("http://google.com"));
o con múltiples direcciones URL, haga lo siguiente:
worker.execute(new URL[]{ new URL("http://google.com"),
new URL("http://stackoverflow.com") });
El onProgressUpdate()
se utiliza para permitir que la tarea de fondo comunicar el progreso a la IU. Como la tarea en segundo plano puede implicar trabajos múltiples (uno para cada parámetro de URL), puede tener sentido publicar valores de progreso por separado (por ejemplo, de 0 a 100% completado) para cada tarea. No es necesario. Su tarea en segundo plano ciertamente podría elegir calcular un valor de progreso total, y pasar ese valor único a onProgressUpdate()
.
El método onPostExecute()
es un poco diferente. Procesa un resultado único, del conjunto de operaciones que se realizaron en doInBackground()
. Por ejemplo, si descarga varias URL, puede devolver un código de falla si el falló. El parámetro de entrada onPostExecute()
tendrá el valor que devuelva de doInBackground()
. Es por eso que, en este caso, ambos valores son Long
.
If doInBackground()
vuelve totalSize
, entonces ese valor se transmitirán onPostExecute()
, donde se puede utilizar para informar al usuario de lo que sucedió, o cualquier otra post-procesamiento que te gusta.
Si realmente necesita para comunicar múltiples resultados como resultado de su tarea en segundo plano, que sin duda puede cambiar el parámetro genérico Long
a algo que no sea un Long
(por ejemplo algún tipo de colección).
leer aquí: http://stackoverflow.com/questions/3158730/java- 3-puntos-en-parámetros – star18bit