2017-01-31 5 views
3

Wie kann ich meine Download-Aufgabe von Firebase abbrechen?Firebase Android: Wie kann ich den Download abbrechen?

Ich möchte den Download abbrechen, wenn ich irgendwo außerhalb der ProgressDialog klicke.

Hier ist der Teil, wo meine Download-Aktivität ExamesActivity.java ist. Es sieht aus wie:

//Download the File on Button(Download) click: 
     bDownload.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 

       //Initalizing teh Spinner-to-String functions: 
       Grade = spClasse.getSelectedItem().toString(); 
       Type = spEpoca.getSelectedItem().toString(); 
       Subject = spDisciplina.getSelectedItem().toString(); 
       Year = spAno.getSelectedItem().toString(); 

       //Download the File: 
       //First Check if ON the Spinner, everything is choosen. It should be. If not, show error Toast. 
       if (Grade.equals("...") | Type.equals("...") | Disciplina.equals("...") | Year.equals("..."){ 

        //Show the The Error Toast: 
        Toast.makeText(ExamesActivity.this, "everything shall be choosen", Toast.LENGTH_SHORT).show(); 

       } else {           //What the dir would look like: "Subject/Grade/Year-Type.extension" 
        pdfRef = mStorageRef.child(Subject + "/" + Grade + "/" + Year + "-" + Type + ".pdf"); 
        File root = android.os.Environment.getExternalStorageDirectory(); 
        File dir = new File(root.getAbsolutePath() + "/Exams-App/"); 

        //Show the ProgressDialog while downloading: 
        progressDialog.show(); 

        if (!dir.exists()) { 
         dir.mkdirs(); 
        } 

        localFile = new File(dir, Subject + "-" + Year + "-" + Grade + "-" + Type + ".pdf"); 


        pdfRef.getFile(localFile).addOnSuccessListener(new OnSuccessListener<FileDownloadTask.TaskSnapshot>() { 
         @Override 
         public void onSuccess(FileDownloadTask.TaskSnapshot taskSnapshot) { 
          // Local temp file has been created 
          progressDialog.dismiss(); 
          Toast.makeText(ExamesActivity.this, "Exam was successfully downloaded!️", Toast.LENGTH_SHORT).show(); 
         } 
        }).addOnFailureListener(new OnFailureListener() { 
         @Override 
         public void onFailure(@NonNull Exception exception) { 
          // Handle any errors 
          progressDialog.dismiss(); 
          Toast.makeText(ExamesActivity.this, "Exam not found on the server.", Toast.LENGTH_LONG).show(); 
         } 

        }).addOnProgressListener(new OnProgressListener<FileDownloadTask.TaskSnapshot>() { 
         @Override 
         public void onProgress(FileDownloadTask.TaskSnapshot taskSnapshot) { 
          //Some math to get the Percentage of the Download :) 
          double progressPercentage = (100.0 * taskSnapshot.getBytesTransferred())/taskSnapshot.getTotalByteCount(); 
          double size = (taskSnapshot.getTotalByteCount())/(1000000); 
          progressDialog.setMessage("PDF Size: " + (size) + " - " + ((int) progressPercentage) + "% - Click away to cancel the download."); 

         } 
        }); 
       } 
      } 
     }); 

Antwort

1

pdfRef.[getFile][1](localFile) eine FileDownloadTask zurückgibt. Dieses Objekt ist eine Unterklasse von CancellableTask, die eine cancel() Methode hat. Sie müssen einen Verweis auf diese Aufgabe halten und die Methode cancel aufrufen, um den Download abzubrechen.

Verwandte Themen