Cannot execute task: the task has already been executed (a task can be executed only once) Как исправить?
Есть 1 метод, который выводит из Firebase данные, в этом методе используется и AsyncTask для получения данных с какого-то ресурса. И есть метод , который изменят данные с Firebase. Но почему-то при вызове метода для изменения данных с Firebase получаю ошибку Async как будто второй раз вызываю Async.. Хотя AsyncTask я вызываю только 1 раз, в методе , где я получаю данные с Firebase.
// FirebaseFirestore firestoreClickStar;
if (firebaseAuth.getCurrentUser() != null) {
firestoreClickStar.collection("book").whereEqualTo("id", idBook).get().addOnCompleteListener(
new OnCompleteListener<QuerySnapshot>() {
@Override
public void onComplete(@NonNull Task<QuerySnapshot> task) {
if (task.isSuccessful()) {
for (QueryDocumentSnapshot document : task.getResult()) {
likes = document.getLong("likes");
documentReference = firestoreClickStar.collection("book").document(document.getId());
documentReference.update("likes", likes += 1);
}
}
}
}
).addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
Log.e("addlikes", e.getMessage());
}
});
//FirebaseFirestore firebaseFirestore;
private void firebaseBookSearch(int id) {
firebaseFirestore.collection("book").whereEqualTo("id", id)
.addSnapshotListener(new EventListener<QuerySnapshot>() {
@Override
public void onEvent(@Nullable QuerySnapshot value, @Nullable FirebaseFirestoreException error) {
if (error != null) {
Log.d("searchbook", error.getMessage());
return;
}
for (DocumentSnapshot doc : value) {
Book book = doc.toObject(Book.class);
tvName.setText(book.getName());
tvLikes.setText(String.valueOf(book.getLikes()));
tvAuthor.setText(book.getAuthor());
urlIma_ge = doc.getString("urlimages");
downloadFileFromUrl.ImageLoadTask(BookDescActivity.this, urlImage, mBluredImage, mOriginImg, imgBook);
downloadFileFromUrl.execute();
}
}
});
}