首页 > 解决方案 > 使用 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();

}

}

标签: javaandroidgoogle-cloud-firestorecountdowntimer

解决方案


每次重新启动您的活动时,都会创建一个新的计时器实例,并且只要您的活动还活着,它就会一直存在。

如果您需要一个可以在活动生命周期中存活的计时器,您应该将它放在前台(或后台)服务或类似的东西中。

因为您使用的是 firebase,所以另一个解决方案是云功能。


推荐阅读