我正在开发一个应用程序,我会显示倒数计时器。倒计时我使用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部分。
答案 0 :(得分:0)
问题在于,如果活动死亡,那么它产生的线程也会消失,我建议创建一个服务来处理这个,因为这样的定时器可能很长我想象(超过4分钟),在那个时候,你需要应用程序不死 看看http://developer.android.com/reference/android/app/Service.html并告诉我这是否足够好。