使用CountDownTimer在特定时间在Firestore上设置特定数据

问题描述 投票:2回答:1

您好,我想使用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();

}

}

java android google-cloud-firestore countdowntimer
1个回答
2
投票

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

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

因为您使用的是Firebase,所以其他解决方案将是云功能。

© www.soinside.com 2019 - 2024. All rights reserved.