Android — Пытается остановить обработчик

#android #handler

#Android #обработчик

Вопрос:

Пытаясь остановить запуск обработчика после подтверждения электронной почты, handler.removeCallbacks(runnable); однако я не смог остановить его с помощью кода, задаваясь вопросом, куда следует поместить код обработчика остановки

 public class unverifiedEmail extends AppCompatActivity {
FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
private Button btnResend;
public static final String TAG = "TAG";
private Handler handler = new Handler();
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_unverrified_email);

    btnResend = findViewById(R.id.btnResend);

    btnResend.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
                user.sendEmailVerification().addOnSuccessListener(new OnSuccessListener<Void>() {
                @Override
                public void onSuccess(Void aVoid) {
                    Toasty.info(unverifiedEmail.this, "New Verification Email has Sent", Toast.LENGTH_SHORT).show();
                }
        }).addOnFailureListener(new OnFailureListener() {
                @Override
                public void onFailure(@NonNull Exception e) {
                    Log.d(TAG, "onFailure: Error On Sending Verification Email" e.getMessage());
                }
            });
         };
    });
    handler.post(runnable);
}

private Runnable runnable = new Runnable() {
    @Override
    public void run() {
        // Insert custom code here
        user.reload();
        if (!user.isEmailVerified()){

        }else {
            handler.removeCallbacks(runnable);
            Toasty.info(unverifiedEmail.this, "Your Account has Verified", Toast.LENGTH_SHORT).show();
            startActivity(new Intent(getApplicationContext(), dashboard.class));
            finish();
        }

        // Repeat every 5 seconds
        handler.postDelayed(runnable, 5000);
    }

};
  

Комментарии:

1. внутри onStop() или onDestory()

2. В вашем коде, даже если вы удаляете обратные вызовы в блоке else, после блока else вы вызываете postdelayed, который снова запускает обратный вызов, может быть, это ваша проблема