【问题标题】:Use CountDown Timer or roll my own based on Handler in Android使用 CountDown Timer 或基于 Android 中的 Handler 滚动我自己的
【发布时间】:2015-03-22 17:00:45
【问题描述】:

这篇文章: http://android-developers.blogspot.co.uk/2007/11/stitch-in-time.html

描述了如何使用 Handler 来实现定时器。我可以使用 CountDown 计时器实现同样的目的: http://developer.android.com/reference/android/os/CountDownTimer.html

这将在前台服务中运行,该服务正在播放音乐,以便在指定时间段后停止音乐(想想音乐椅)。锁屏时计时需要可靠,我认为在前台服务中运行应该可以确保这一点,是这样吗?

我从这篇文章中知道: Why does CountDown Timer in Android use a Handler?

倒计时计时器是使用处理程序实现的,所以我的想法是,我使用哪个可能并不重要,但在我开始编码之前,我想我会寻求大众的智慧!

谢谢,安德鲁

【问题讨论】:

    标签: android timer android-service android-handler


    【解决方案1】:

    我最终选择了一个处理程序,它工作正常:

    //required import
    import android.os.Handler;
    
    //class wide variable... are these considered bad? 
    private Handler timeHandler = new Handler();
    
    //wherever in your code you want to begin the timer or reset it
    timeHandler.removeCallbacks(updateTime);
    timeHandler.postDelayed(updateTime, 100);    
    
    //this is the callback which will be called every 100ms or whatever value you gave in postDelayed
    
    private Runnable updateTime = new Runnable() {
                public void run() {
                    timeHandler.postDelayed(this, 100);
                    currentTimeMillis = currentTimeMillis + 100;
                    //do whatever you need to do every 100ms here... or whenever currentTimeMillis reaches the value you're waiting for.
            }
    

    我添加了一个 wakeLock 以在屏幕被锁定时保持 CPU 唤醒并且还使用了前台服务。到目前为止,我所做的测试都是准确的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-04-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多