处理程序postDelayed配置延迟更长时间

时间:2011-04-28 20:56:44

标签: android timer handler delay

我尝试开发一个简单的定时器蜂鸣器,每小时一次。对于时间我使用服务和处理程序,这里的例子是:

    void onStart(...){
        handler.postDelayed(timerRunnable, ONE_HOUR);
    }

    private Runnable timerRunnable = new Runnable() {

    @Override
        public void run() {
               ...beep
               handler.postDelayed(timerRunnable, ONE_HOUR);
        }
    };

run()方法将被触发不确定,我认为它取决于当前设备的使用情况。

我尝试使用TimerTask和'manualy'线程实现相同的场景,但具有相同的非确定性结果。

2 个答案:

答案 0 :(得分:4)

使用AlarmManager进行如此长时间的延迟,你可能会有更好的运气。当你的应用程序在前台时,Handler最适合刻度和超时。

http://developer.android.com/reference/android/app/AlarmManager.html

答案 1 :(得分:0)

Android不是实时操作系统。所有postDelayed()保证是它至少是指定的毫秒数。除此之外,主要取决于主应用程序线程正在做什么(如果你要绑定它,它不能处理Runnable),其次取决于设备上还有什么(服务以后台优先级运行,因此比前台获得更少的CPU时间。

相关问题