!= 前一秒的每一秒都会发布一个新值,当该值达到 <1 时,倒计时结束。
我用 System.currentTimeMillis() 记下开始时间,然后从那里简单地计算倒计时的剩余时间。所有这些都是在一个可运行的可重复运行的中完成的。
输入剩余的分钟和秒数时,我使用以下公式:
secondsLeft= (int) ((time / 1000) % 60);
minutesLeft = (int) (time / (60*1000));
我遇到的问题是,当 secondsLeft 达到 <1 时,计时器结束。但是我的警报通过使用纯毫秒的 AlarmManager 设置,因此不四舍五入到最接近的秒,运行得早一点,或者晚于计时器完成。
我该怎么做才能使它们同步?
一些额外的信息:
倒计时结束时,我正在振动手机。因此,我不能让计时器达到 0,然后手机早晚振动。
我使用 AlarmManager 进行振动,因为如果手机睡得太久,它就不会响起(在前台运行的服务大部分时间都在工作,但不是 100%)。