您好,我想使用countDownTimer在特定时间在Firestore上设置特定数据。当我的countDown完成时,数据在firestore上设置正确,但是每次更新活动时,都会一次又一次地重置数据。当我的数据设置一次时,请使用一种可能的方法来破坏finish方法。如果您有其他建议可以欢迎您的到来
firebaseAuth=FirebaseAuth.getInstance();
firebaseFirestore=FirebaseFirestore.getInstance();
long mil=200000;
downTimer =new CountDownTimer(mil,1000) {
@Override
public void onTick(long millisUntilFinished) {
}
@Override
public void onFinish() {
Map<String,Object> map=new HashMap<>();
map.put("Password","userPassword");
firebaseFirestore.collection("UsersName").document().set(map).addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
if (task.isSuccessful()) {
Toast.makeText(ForgetPasswordActivity.this, "Done sir", Toast.LENGTH_SHORT).show();
downTimer.cancel();
}
}
}).addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
e.printStackTrace();
}
});
}
}.start();
}
}
每次重新启动活动时,都会创建一个新的计时器实例,并且只要该活动仍然存在,它就会一直存在。
如果您需要一个可以在活动生命周期内生存的计时器,则应将其放在前台(或后台)服务或类似的服务中。
因为您使用的是Firebase,所以其他解决方案将是云功能。