java - 使用 CountDownTimer 在特定时间在 Firestore 上设置特定数据
问题描述
您好,我想使用 countDownTimer 在特定时间在 Firestore 上设置特定数据。当我的倒计时完成时,数据在 firestore 上设置得很好,但每次更新活动时,数据都会一次又一次地重置。当我的数据设置一次时,是否有可能破坏完成方法?如果您有其他建议欢迎
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,所以另一个解决方案是云功能。
推荐阅读
- java - 即使设置了 NON_EMPTY,杰克逊也会打印对象
- powershell - 如何通过只知道行的一部分(CONTAINING *)来替换文本文件中的整行?
- python - 使用 pyarrow 时无法加载 libhdfs
- r - 是否有任何处理蓝牙连接的 R 包?
- powershell - robocopy /xd 忽略目录列表
- java - Spring 框架存储库查询返回 null
- javascript - 使用带有 HTML 地理位置的 Google 地图
- python - 更改标签编码后训练指标的变化
- docker - 通过 Docker 连接到虚拟机上的外部 API
- python - python regex 句子的结尾或开头