处理器显示倒数计时器是不可靠的

时间:2011-09-21 20:39:55

标签: android

我正在开发一个应用程序,我会显示倒数计时器。倒计时我使用Handler类的时间。一旦倒计时器到达特定时间,闹钟就会熄灭。我的问题如下,         最初我将计时器时间显示为04:00:00。一旦到达00:00:00,警报就会响起。警报代码工作正常。但是计时器显示不可靠。它工作正常,直到我保持应用程序打开。如果我关闭应用程序(使用主页或后退)或锁定设备并再次打开应用程序,则显示的计时器不正确(延迟很多,但仍然按时启动警报)。 (但在同样的情况下它有时非常好)。但每当我将设备ping到系统检查登录日食时,一切正常!!!!!!!

 1. I want to know whether I am using the Handler properly or not
 2. (or) Is going out of the App or locking the device causing the problem

以下是我的处理程序代码,

Handler digiHandler;

//初始化时间并定义处理程序的方法

public void initialize(int hourstime,int mintime,int sectime){
    hour = hourstime;
    min = mintime;
    sec = sectime;
    digiHandler = new Handler();
    handleRunnable = new Runnable(){
        public void run(){
            updateTimes();
        }
    };
}


public void startUpdateTheread(){
    digiHandler.postDelayed(handleRunnable, UPDATEDELAY);
}       

// Method to update the timer times

private void updateTimes(){

    timerText = String.format(timerFormat,hour,min,sec );
    -------------------------
    -------------------------
    --  code for incrementing the time ---
    --------------------------
    --------------------------
    --------------------------

        startUpdateTheread();           
}

请提出建议

由于

修改   当我观察日志时,它显示倒计时1秒计时器有时需要1分钟时间。日志如下,

09-21 21:09:18.965 :DEBUG / DigitalTimer(7656):timerText **: 04:22:54

    ****long difference here****

09-21 21:10:19.308 :DEBUG / DigitalTimer(7656):timerText **: 04:22:53

............................................... ................................... .................................................. ................................ .................................................. ................................

09-21 21:10:23.314 :DEBUG / DigitalTimer(7656):timerText **: 04:22:49

    **--long difference here ---**

09-21 21:11:22.604 :DEBUG / DigitalTimer(7656):timerText **: 04:22:48

它总是在发生。所以我可以排除锁定/退出应用程序导致问题。似乎我需要调整代码的Handler部分。

1 个答案:

答案 0 :(得分:0)

问题在于,如果活动死亡,那么它产生的线程也会消失,我建议创建一个服务来处理这个,因为这样的定时器可能很长我想象(超过4分钟),在那个时候,你需要应用程序不死 看看http://developer.android.com/reference/android/app/Service.html并告诉我这是否足够好。