java - 为什么我的 Android 倒计时器这么慢?

标签 java android timer

我正在尝试在 Android 中制作一个倒计时器,以便在小型 Android 应用程序中使用。应用程序将从某个秒数倒计时到 0,然后执行一些操作。我正在使用 android.os.countdowntimer 提供的倒计时器。这是我的代码:

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.quizlayout);

    new CountDownTimer(30000, 1000) {

        TextView tx = (TextView) findViewById(R.id.textView2);

         public void onTick(long millisUntilFinished) {
             tx.setText("seconds remaining: " + millisUntilFinished / 1000);
         }

         public void onFinish() {
             tx.setText("done!");
         }
      }.start();
}

但是,这个倒计时器实在是太慢了。计时器倒计时一秒大约需要 3 秒的实时时间。我想知道发生了什么事?我上面的代码或多或少是直接从谷歌复制的( CountDownTimer )

任何人都可以帮助我了解为什么我的计时器如此慢,并提供一种加快速度的方法吗?

(编辑):我在模拟器 intelatom x86 上运行它。我正在模拟 android 2.3.3 环境。

最佳答案

根据Android文档倒计时器

The calls to onTick(long) are synchronized to this object so that one call to onTick(long) won't ever occur before the previous callback is complete. This is only relevant when the implementation of onTick(long) takes an amount of time to execute that is significant compared to the countdown interval.

看一下这个倒计时器示例 Countdown timer example

或者,您可以生成一个新线程,然后让该线程在您想要的时间间隔内 hibernate ,并在它唤醒时采取操作,反之亦然。

您还可以定时任务

关于java - 为什么我的 Android 倒计时器这么慢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10858147/

相关文章:

java - 从 Gherkin 语句中转义数字或带引号的字符串

java - 使用 JSoup 解析音频 Src

java - Java中如何获取计时器的剩余时间?

Android 状态栏裁剪菜单

android - 保护 Dropbox 访问 token 的安全

javascript - 将 if else 语句与计时器一起使用

xamarin - 如何在完成之前取消计时器

java - 带有 Jersey 的 OPTIONS 请求的 CORS header

java - "Wrong"应用程序被固定到任务栏 (Windows 7)

java - 从数据库中获取最高 10 个值并显示在 RecyclerView 中