2010-11-16 3 views
2

Mon application a besoin de télécharger de gros fichiers. J'utilise un service pour le téléchargement et montre le progrès dans une notification. Le problème est que pendant ce temps de téléchargement, l'utilisateur peut passer de 3g à WIFI. Dans ce cas, la progression s'arrête mais aucune exception n'est levée. Comment gérer correctement cette situation?Comment gérer passer de la 3G à WIFI? UrlConnection TimeOut ne lance pas Exception

URL url = new URL(myurl); 
URLConnection conexion = url.openConnection(); 
conexion.setReadTimeout(10000); 
conexion.setConnectTimeout(10000); 
conexion.connect(); 
int lenghtOfFile = conexion.getContentLength(); 
// downlod the file 
InputStream input = new BufferedInputStream(url.openStream()); 
OutputStream output = new FileOutputStream(targetFilePath); 

byte data[] = new byte[1024]; 

long total = 0; 
while ((count = input.read(data)) != -1) { 
    total += count; 
    // publishing the progress.... 
    updateProgress(downloadNM, downloadNotification, (int)total*100/lenghtOfFile); 
    output.write(data, 0, count); 
} 
output.flush(); 
output.close(); 
input.close(); 

Répondre

1

Jetez un coup d'œil à la bibliothèque HttpClient. Il offre beaucoup plus d'options que la classe d'URL, et pourrait vous aider avec votre problème.

http://developer.android.com/reference/org/apache/http/client/HttpClient.html

+0

Pourriez-vous expliquer comment le problème du demandeur peut effectivement être résolu avec HttpClient? Ce serait un peu plus utile qu'un lien vers la documentation. – LouieGeetoo

+1

Eh bien, les chances sont que HttpClient ne présentera pas le même comportement en premier lieu. Et si c'est le cas, il aura au moins de meilleurs outils à portée de main pour résoudre des problèmes de connexion compliqués. –

Questions connexes