Tâche com.google.firebase.av rejetée à partir de java.util.concurrent.ThreadPoolExecutor

Copains,

Je voudrais savoir à propos de cette erreur. J’utilise Firebase sous Android. L’erreur complète est:

Fatal Exception: java.util.concurrent.RejectedExecutionException Task com.google.firebase.av@61b9a00 rejected from java.util.concurrent.ThreadPoolExecutor@eacc239[Running, pool size = 2, active threads = 2, queued tasks = 128, completed tasks = 0] 

L’erreur se produit sur DataChange intérieur d’un Fragment , qui lit les informations pour renseigner RecyclerView .

J’aimerais savoir pourquoi cela se produit et comment je devrais éviter cette erreur.

Merci et désolé, car je sais que je n’explique pas le problème en détail, mais je ne sais vraiment pas pourquoi cela se produit.

MODIFIER

C’est le code où j’ai réalisé qu’il montre l’erreur. Tout a commencé lorsque j’ai essayé de télécharger plus de 5 photos en même temps.

 if (!pet.isUploaded()) { File image = new File(pet.getPicPath()); final StorageReference referenceImage = storageRef.child("Adopcion" + "/" + pet.getOwner() + "/" + "Adopcion" + "/" + pet.getName() + pet.getAnimalID()); Uri image2 = Uri.parse(""); if (image.exists()) { image2 = Uri.fromFile(new File(image.toURI())); } UploadTask taskImage = referenceImage.putFile(image2); taskImage.addOnCompleteListener(new OnCompleteListener() { @Override public void onComplete(@NonNull Task task) { if (task.isSuccessful()) { if (task.getResult().getDownloadUrl() != null) { pet.setUploaded(true); pet.setPicPath(task.getResult().getDownloadUrl().toSsortingng()); mReference.child(Ssortingng.valueOf(pet.getAnimalID())).setValue(pet).addOnCompleteListener(new OnCompleteListener() { @Override public void onComplete(@NonNull Task task) { if (getActivity() != null) { File folder = getActivity().getCacheDir(); File myFile = new File(folder, Ssortingng.valueOf(pet.getAnimalID()) + ".jpg"); if (myFile.exists()) { myFile.delete(); } } } }); } } } }); } 

EDIT FIX

Le problème se posait car l’image avait été téléchargée plusieurs fois, car une fois le téléchargement terminé, j’ai modifié le statut de mon animal de compagnie en le remplaçant par true. Cependant, il faut quelques secondes à Firebase pour effectuer cette modification. L’image a donc été téléchargée plusieurs fois.

Ce que j’ai fait pour résoudre ce problème n’est peut-être pas la meilleure façon de le résoudre, mais cela fonctionne jusqu’à ce que je puisse trouver un meilleur moyen. J’utilise simplement un tableau pour stocker l’identifiant de l’animal, et une fois le téléchargement effectué, j’ai suivi l’identifiant de l’animal pour savoir si l’image avait déjà été téléchargée, puis éviter que l’image ne soit à nouveau mise en queue.

Avant cette correction, je réalisais que l’image avait été téléchargée plus de 10 fois et même davantage si l’image avait été créée hors connexion.

Comment j’ai résolu le problème

Le problème se posait car l’image avait été téléchargée plusieurs fois, car une fois le téléchargement terminé, j’ai modifié le statut de mon animal de compagnie en le remplaçant par true. Cependant, il faut quelques secondes à Firebase pour effectuer cette modification. L’image a donc été téléchargée plusieurs fois.

Ce que j’ai fait pour résoudre ce problème n’est peut-être pas la meilleure façon de le résoudre, mais cela fonctionne jusqu’à ce que je puisse trouver un meilleur moyen. J’utilise simplement un tableau pour stocker l’identifiant de l’animal, et une fois le téléchargement effectué, j’ai suivi l’identifiant de l’animal pour savoir si l’image avait déjà été téléchargée, puis éviter que l’image ne soit à nouveau mise en queue.

Avant cette correction, je réalisais que l’image avait été téléchargée plus de 10 fois et même davantage si l’image avait été créée hors connexion.