#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, который снова запускает обратный вызов, может быть, это ваша проблема