java - Android 中的倒计时问题

标签 java android countdowntimer android-toast

我在开始录制之前创建了一个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/

相关文章:

java - asyncTask 的 doInBackground 没有被调用?

Java启动while循环而不暂停当前线程

java - 是否可以使用 java.awt.Robot 进行水平鼠标滚轮滚动?

java - 将 java.util.Date 转换为 java.sql.Date 导致日期更改

android - Flutter 应用程序中 firebase 数据库上的 ValueEventListener

java - CountDownTimer——表示用户递增。问题

android - 每两秒后一个一个地显示 GridView Cell

java - Android SQLite 从 fragment 调用数据库

JavaScript 倒计时日期

android - 带 Action 的倒数计时器循环