android:调度时间任务非常规调度执行时间

android:调度时间任务非常规调度执行时间,android,timertask,Android,Timertask,我发现一个TimerTask没有一个固定的执行时间是很奇怪的。。。 我安排了一个,延迟:1000毫秒,并在运行时记录下来。。。 有时是+1毫秒 scheduledExecutionTime(作为传感器时间戳)是与系统正常运行时间相关的,单位为纳秒(文档中未说明) 这种不稳定的时机有什么原因吗 // BEGINNING OF THREAD RUN @Override public void run() { mRunning =

我发现一个TimerTask没有一个固定的执行时间是很奇怪的。。。 我安排了一个,延迟:1000毫秒,并在运行时记录下来。。。 有时是+1毫秒 scheduledExecutionTime(作为传感器时间戳)是与系统正常运行时间相关的,单位为纳秒(文档中未说明)

这种不稳定的时机有什么原因吗

        // BEGINNING OF THREAD RUN
        @Override
        public void run() {
            mRunning = true;
            RecordingTimerTask recordingTask = new RecordingTimerTask();
            Timer recordingTimer = new Timer();
        recordingTimer.schedule(recordingTask, 0, 1000);
       .....

            class RecordingTimerTask extends TimerTask {
            public void run() {
        String data = "" + scheduledExecutionTime();
           for (int i = 0; i < 3; i++) {
                data = data + ";" + timestamps[i];
            }
       ....
//线程运行的开始
@凌驾
公开募捐{
mRunning=真;
RecordingTimerTask recordingTask=新建RecordingTimerTask();
定时器记录定时器=新定时器();
记录时间表(记录任务,0,1000);
.....
类RecordingTimerTask扩展了TimerTask{
公开募捐{
字符串数据=“scheduledExecutionTime()”;
对于(int i=0;i<3;i++){
数据=数据+“;”+时间戳[i];
}
....
记录数据:

1391015410050   0
1391015411050   1000
1391015412050   1000
1391015413050   1000
1391015414050   1000
1391015415051   1001  <+ 1
1391015416051   1000
1391015417052   1001  <+ 1
1391015418052   1000
1391015419052   1000
1391015420052   1000
1391015421052   1000
1391015422052   1000
1391015423052   1000
1391015424052   1000
1391015425052   1000
1391015426053   1001  <+ 1
...
1391015410050 0
1391015411050   1000
1391015412050   1000
1391015413050   1000
1391015414050   1000

1391015415051 1001从大多数真实情况来看,这实际上相当准确。TimerTask(如计时器和倒计时)都在非高优先级的后台线程中运行。其他线程(如UI线程)可能会执行并阻塞

看看这篇帖子和我的回复:


请阅读计时器文档,特别是关于固定期限和固定利率之间差异的章节。我认为这应该回答您的问题。