Диалог выполнения асинхронной задачи занимает много времени для простой задачи в Android - PullRequest
0 голосов
/ 08 октября 2018

Эта асинхронная задача, когда я звоню, занимает много времени, но задача очень короткая, когда я прямо ставлю код, она работает нормально, но когда я использую асинхронную задачу, это занимает время, я уже нахожу решение с этого сайта,
Асинхронная задача диалога выполнения занимает больше времени, чем ожидалось , но она не работает должным образом,

public class Towing_TaskCollectAmountCash extends AsyncTask<Double,Void,Void>{

private ProgressDialog progressDialog;
Activity activity;


public Towing_TaskCollectAmountCash(Activity activity,Double collectedAmount) {
    this.activity = activity;
    this.collectedAmount=collectedAmount;
    progressDialog=new ProgressDialog(activity);
}

//progress Dialog Showing
@Override
protected void onPreExecute() {
    progressDialog.setTitle("Please Wait...");
    progressDialog.setCancelable(false);
    progressDialog.setIndeterminate ( true ) ;
    progressDialog.show();
}
@Override
protected Void doInBackground(Double... amount){
     referenceOfDriverWallets=FirebaseDatabase.getInstance().getReference().child("Wallet").child("Drivers").child(FirebaseAuth.getInstance().getCurrentUser().getUid());
     referenceOfDriverWallets.addListenerForSingleValueEvent(new ValueEventListener({
        @Override
        public void onDataChange(DataSnapshot dataSnapshot){
          if(dataSnapshot.child("TotalRideCollection").exists()){
              totalRideCollection= Double.valueOf(dataSnapshot.child("TotalRideCollection").getValue().toString());
            }
        }

         @Override
        public void onCancelled(DatabaseError databaseError) {
        }
});}

//Progress Dialog dismiss
@Override
protected void onPostExecute(Void aVoid) {
    progressDialog.dismiss();
}

}

это основной код вызова MainActivity

Towing_TaskCollectAmountCash obj=new 
Towing_TaskCollectAmountCash(CollectPayment.this,collectedAmount);
obj.execute();

Пожалуйста, помогите мне,Заранее спасибо

1 Ответ

0 голосов
/ 08 октября 2018

Попробуйте что-то вроде этого:

Создайте экземпляр класса для ProgressDialog

private ProgressDialog progressDialog = null;

Теперь просто простой метод для вызова Firebase:

private Void getData(){
    if(progressDialog == null){
        progressDialog = new ProgressDialog(context);
        progressDialog.setTitle("Please Wait...");
        progressDialog.setCancelable(false);
        progressDialog.setIndeterminate ( true ) ;
    }
    progressDialog.show();

     referenceOfDriverWallets=FirebaseDatabase.getInstance().getReference().child("Wallet").child("Drivers").child(FirebaseAuth.getInstance().getCurrentUser().getUid());
     referenceOfDriverWallets.addListenerForSingleValueEvent(new ValueEventListener({
        @Override
        public void onDataChange(DataSnapshot dataSnapshot){
          if(dataSnapshot.child("TotalRideCollection").exists()){
              totalRideCollection= Double.valueOf(dataSnapshot.child("TotalRideCollection").getValue().toString());

              progressDialog.dismiss();
            }
        }

         @Override
        public void onCancelled(DatabaseError databaseError) {
            progressDialog.dismiss();
        }
    });
}

Если вы вызываете это изнутри Activity, контекст может быть следующим:

YourActivity.this

Похоже, вы не используете параметр collectedAmount.



ПРИМЕЧАНИЕ:

Я не проверял код для запроса Firebase.Я просто предположу, что это сработало, как ожидается.

...