我在开始录制之前创建了一个CountDownTimer
。部分代码:
if(bitRateBoolean && timeBoolean && name) {
toast = Toast.makeText(getActivity(), "Registration will start in 5 seconds", Toast.LENGTH_SHORT);
toast.show();
new CountDownTimer(5000, 1000) {
public void onTick(long millisUntilFinished) {
Toast.makeText(getActivity(), "seconds remaining: " + millisUntilFinished / 1000,
Toast.LENGTH_LONG).show();
}
public void onFinish() {
toast.cancel();
rec();
}
}.start();
}
我希望 rec()
在 5 秒后启动,并且 toast 显示倒计时。但这行不通。它显示倒计时,但似乎每两秒倒计时一次,而不是一秒。我必须等待两次才能让 toast 消失。代码有问题吗?
最佳答案
Countdown Timer从我在这里读到的内容来看,问题在于 toast 时间,因为它需要两秒多的时间。仅在第一个 onClick 完成后才会调用下一个 onClick。如果你的 toast 花费的时间超过 1 秒(“Toast.LENGTH_LONG”确实如此),那么下一次调用 onTick 将不会在 1 秒后。
private static final int LONG_DELAY = 3500; // 3.5 seconds
private static final int SHORT_DELAY = 2000; // 2 seconds
这些是 Toast 的 LENGTH_LONG 和 LENGTH_SHORT 默认值。
我的建议是使用Status Bar Notifications而不是 toast
关于java - Android 中的倒计时问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21092123/