android:调度时间任务非常规调度执行时间
我发现一个TimerTask没有一个固定的执行时间是很奇怪的。。。 我安排了一个,延迟:1000毫秒,并在运行时记录下来。。。 有时是+1毫秒 scheduledExecutionTime(作为传感器时间戳)是与系统正常运行时间相关的,单位为纳秒(文档中未说明) 这种不稳定的时机有什么原因吗android:调度时间任务非常规调度执行时间,android,timertask,Android,Timertask,我发现一个TimerTask没有一个固定的执行时间是很奇怪的。。。 我安排了一个,延迟:1000毫秒,并在运行时记录下来。。。 有时是+1毫秒 scheduledExecutionTime(作为传感器时间戳)是与系统正常运行时间相关的,单位为纳秒(文档中未说明) 这种不稳定的时机有什么原因吗 // BEGINNING OF THREAD RUN @Override public void run() { mRunning =
// 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线程)可能会执行并阻塞
看看这篇帖子和我的回复:
请阅读计时器文档,特别是关于固定期限和固定利率之间差异的章节。我认为这应该回答您的问题。