Intentando usar AsyncTask descargue algunos archivos de imagen

Tengo una lista de archivos almacenados dentro de la lista de arrays que necesito descargar en el hilo de fondo. Mi pensamiento inicial es que AsyncTask debería estar preparado para esa tarea. Pero tengo un problema, no sé cómo proporcionar mi lista al método doInBackground.

Mi lista de arrays se define como

private ArrayList<String> FilesToDownload = new ArrayList<String>();

Mi subclase DownloadFiles (la forma en que está escrito ahora) debe llamarse con: new DownloadFiles (). Execute (url1, url2, url3, etc.);

Esto no es adecuado para mí ya que nunca sé cuántas URL tendré. Está cambiando bastante de un caso a otro. Entonces, de alguna manera me gustaría pasar mi lista de arrays al método doInBackground.

Intenté convertir a matriz con toArray ():

new DownloadFiles().execute(FilesToDownload.toArray());

Pero, eclipse me dice que ejecutar no es aplicable para el argumento Object []. La sugerencia era enviar a URL [], pero cuando lo intenté, obtuve un error de transmisión ilegal y la aplicación se bloqueó.

Parece que doInBackground tiene que implementarse con parámetros en tipo varargs (URL ... urls).

¿Alguna idea de cómo resolver mi problema? Gracias

class DownloadFiles extends AsyncTask<URL, Integer, Long> {
     protected Long doInBackground(URL... urls) {
         int count = urls.length;
         long totalSize = 0;        
         for (int i = 0; i < count; i++) {
             Log.d("Evento", "&&&& downloading: " + FilesToDownload.get(i).toString());
//             totalSize += Downloader.downloadFile(urls[i]);
//             publishProgress((int) ((i / (float) count) * 100));
         }
         return totalSize;
     }
     protected void onProgressUpdate(Integer... progress) {
        //setProgressPercent(progress[0]);
     }
     protected void onPostExecute(Long result) {
       //showDialog("Downloaded " + result + " bytes");
     }
}

Respuestas a la pregunta(1)

Su respuesta a la pregunta