2011-07-19 3 views
1

J'ai créé une application qui permet à l'utilisateur de télécharger un fichier audio et de le stocker sur sa carte SD. Le code ci-dessous fonctionne réellement, mais le problème est chaque fois que j'appuie sur le bouton de téléchargement, l'application entière se bloque jusqu'à ce que le téléchargement soit terminé. Comment puis-je résoudre ce problème afin qu'il ne gèle pas chaque fois que je clique sur le bouton de téléchargement? S'il vous plaît aidez-moi, j'ai lutté pendant des jours en essayant de trouver la solution pour cela, j'apprécierais vraiment votre aide beaucoup. Merci d'avance.Téléchargement de problème de fichiers mp3 sous Android

try {

  URL url = new URL("http://www.yourfile.mp3"); 
      HttpURLConnection c = (HttpURLConnection) url.openConnection(); 
      c.setRequestMethod("GET"); 
      c.setDoOutput(true); 
      c.connect(); 

      String PATH = Environment.getExternalStorageDirectory() 
        + "/download/"; 
      Log.v("", "PATH: " + PATH); 
      File file = new File(PATH); 
      file.mkdirs(); 

      String fileName = "yourfilename.mp3"; 

      File outputFile = new File(file, fileName); 
      FileOutputStream fos = new FileOutputStream(outputFile); 

      InputStream is = c.getInputStream(); 

      byte[] buffer = new byte[1024]; 
      int len1 = 0; 
      while ((len1 = is.read(buffer)) != -1) { 
       fos.write(buffer, 0, len1); 
      } 
      fos.close(); 
      is.close(); 

      }catch (IOException e) { 
        e.printStackTrace(); 
      } 

     } 
+1

Depuis votre méthode de téléchargement fonctionne le téléchargement de votre fichier, il va créer une impression comme l'application a freezed. Mais la vérité est que votre méthode s'exécute dans le dos. Ainsi, pour éviter le gel de l'application, vous pouvez afficher un ProgressDialog jusqu'à ce que la méthode de téléchargement soit en cours de téléchargement et après l'exécution, vous pouvez annuler le ProgressDialog. –

+0

J'ai effectivement essayé, mais la même chose s'est produite. Les spectacles ProgressDialog après le téléchargement est terminé. Merci pour votre réponse – user739375

Répondre

1

Étant donné que votre méthode de téléchargement fonctionne en téléchargeant votre fichier, elle crée une impression comme l'application s'est figée. Mais la vérité est que votre méthode s'exécute dans le dos. Ainsi, pour éviter le gel de l'application, vous pouvez afficher un ProgressDialog jusqu'à ce que la méthode de téléchargement soit en cours de téléchargement et après l'exécution, vous pouvez annuler le ProgressDialog.

Vous devez donc utiliser un fil distinct à télécharger. Voici le lien qui vous explique comment télécharger et montrer une progression dans le temps.

http://www.bogotobogo.com/Android/android23HTTP.html

0

Chaque fois que vous cliquez sur le bouton d'appel de la AsynchTask.Do votre téléchargement dans la méthode doInBackground. La classe this est conçue exactement pour le type de travail que vous recherchez.Utilisez la méthode doInBackground() pour accomplir la tâche et onPreExecute vous pouvez afficher une boîte de dialogue de progression.

Questions connexes