Hola, en mi app android estoy realizando la descarga de imagenes desde un asyntask con barra de progreso. El problema es que si llamo a la funcion desde un boton me muestra la barra de progreso y todo funciona bien, pero si quiero hacer lo mismo desde codigo, las imagenes se descargan pero no se muestra la barra de progreso.
Llamo al Asynctask desde la siguiente función:
Código:
public void Imagenes(){
new DescargarImagenes().execute(imagenes);
}
La única diferencia cuando la llamo desde el boton es que le paso un View v.
El asynctask es el siguiente:
Código:
@Override
protected Dialog onCreateDialog(int id) {
switch (id) {
case progress_bar_type:
imgDialog = new ProgressDialog(this);
imgDialog.setMessage("Descargando Imágenes. Por favor espere...");
imgDialog.setIndeterminate(false);
imgDialog.setMax(100);
imgDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
imgDialog.setCancelable(true);
imgDialog.show();
return imgDialog;
default:
return null;
}
}
class DescargarImagenes extends AsyncTask<String, String, String> {
@Override
protected void onPreExecute() {
showDialog(progress_bar_type);
}
@Override
protected String doInBackground(String... f_url) {
int count;
try {
for (int i = 0; i < f_url.length; i++) {
URL url = new URL(url_imagenes + f_url[i]);
URLConnection conection = url.openConnection();
conection.connect();
int lenghtOfFile = conection.getContentLength();
InputStream input = new BufferedInputStream(
url.openStream(), 8192);
System.out.println("Data::" + f_url[i]);
OutputStream output = new FileOutputStream(Environment.getExternalStorageDirectory().getAbsolutePath() + "/Vinoid/" + f_url[i].replaceAll("%20"," "));
byte data[] = new byte[1024];
long total = 0;
while ((count = input.read(data)) != -1) {
total += count;
publishProgress(""
+ (int) ((total * 100) / lenghtOfFile));
output.write(data, 0, count);
}
output.flush();
output.close();
input.close();
}
} catch (Exception e) {
Toast.makeText(getApplicationContext(), "Error" + e.toString(),
Toast.LENGTH_SHORT).show();
}
return null;
}
protected void onProgressUpdate(String... progress) {
imgDialog.setProgress(Integer.parseInt(progress[0]));
}
@Override
protected void onPostExecute(String file_url) {
imgDialog.dismiss();
}
}
¿Alguien sabe que puede estar ocurriendo o si me falta algo en el código?
Gracias
Un Saludo