2017-12-19 2 views
0

내가 사용하고있다 FirebaseFirestore 나는 데이터베이스에서 데이터를 제거하고 싶다. 데이터를 제거하는 것은 괜찮지 만 진행 상황 대화 상자에 stucking이 생기게된다. 나는 Worker 스레드를 사용해야한다고 생각하지만, 사용법을 모른다.위의 Firebase Firestore가 데이터를 삭제하는 것을 봤나요?

db = FirebaseFirestore.getInstance(); 
      db.collection("expenses").document(ids) 
        .delete() 
        .addOnSuccessListener(new OnSuccessListener<Void>() { 
         @Override 
         public void onSuccess(Void aVoid) { 

          Toast.makeText(Expense_Summary.this, "successfully deleted file", Toast.LENGTH_SHORT).show(); 
          result = "deleted"; 
          hideProgressDialog(); 
          finish(); 

         } 
        }) 
        .addOnFailureListener(new OnFailureListener() { 
         @Override 
         public void onFailure(@NonNull Exception e) { 
          Log.w("deleting f", "Error deleting document", e); 
          hideProgressDialog(); 
          Toast.makeText(Expense_Summary.this, "Error deleting file", Toast.LENGTH_SHORT).show(); 
         } 
        }); 

I 대해 참조 용 문서 : https://firebase.google.com/docs/firestore/manage-data/delete-data

답변

1

이 시도 :

final ProgressDialog progressDialog = ProgressDialog.show(Activity_name_here.this,"Please wait","Processing",true); 
          Runnable runnable=new Runnable() { 
           @Override 
           public void run() { 
            progressDialog.cancel(); 
           } 
          }; 
          Handler pdCanceller = new Handler(); 
          pdCanceller.postDelayed(runnable, 3000); 
db = FirebaseFirestore.getInstance(); 
     db.collection("expenses").document(ids) 
       .delete() 
       .addOnSuccessListener(new OnSuccessListener<Void>() { 
        @Override 
        public void onSuccess(Void aVoid) { 

         Toast.makeText(Expense_Summary.this, "successfully deleted file", Toast.LENGTH_SHORT).show(); 
         result = "deleted"; 
         progressDialog.dismiss(); 
         finish(); 

        } 
       }) 
       .addOnFailureListener(new OnFailureListener() { 
        @Override 
        public void onFailure(@NonNull Exception e) { 
         Log.w("deleting f", "Error deleting document", e); 
         progressDialog.dismiss(); 
         Toast.makeText(Expense_Summary.this, "Error deleting file", Toast.LENGTH_SHORT).show(); 
        } 
       }); 

대화 기다려주십시오 텍스트로 표시됩니다 진행하고 옆에 작은 원 위의 코드를 사용하여 그것은 쓰여진 것입니다.

여기에 pdCanceller.postDelayed(runnable, 3000);은 3000 밀리 초를 사용하는 시간을 지정합니다. 그런 다음 성공하면 진행 대화 상자가 닫힙니다. 또는 실패하면 진행 대화 상자가 닫힙니다.

관련 문제