使用处理程序重复任务比间隔花费更多时间
Repeating task with handler take more time than interval
我从服务器获取数据并且必须每 x 秒更新一次。
我使用 Handler
的 postDelayed
函数执行此操作。
private long mInterval = 10000;
Runnable mStatusChecker = new Runnable() {
@Override
public void run() {
try {
takeServerResponse(); //with vary duration
}catch (Exception e){
itsRunning = false;
} finally {
if(mHandler!=null) {
mHandler.postDelayed(mStatusChecker, mInterval);
}
}
}
};
有时获取新数据可能需要超过 X 秒。
这种情况我该怎么办?
如果我们需要增加间隔,如何确定何时这样做?
您的处理程序过去常常在 10 之后调用服务器响应 sec.But 这完全取决于您的互联网速度以从服务器获取数据,这就是它需要很长时间的原因
您可以计算作业的持续时间并根据持续时间postDelayed您的处理程序。
例如:
startTime = System.currentTimeMillis();
//your job
duration = System.currentTimeMillis() - startTime;
mInterval = mInterval - duration
我从服务器获取数据并且必须每 x 秒更新一次。
我使用 Handler
的 postDelayed
函数执行此操作。
private long mInterval = 10000;
Runnable mStatusChecker = new Runnable() {
@Override
public void run() {
try {
takeServerResponse(); //with vary duration
}catch (Exception e){
itsRunning = false;
} finally {
if(mHandler!=null) {
mHandler.postDelayed(mStatusChecker, mInterval);
}
}
}
};
有时获取新数据可能需要超过 X 秒。 这种情况我该怎么办?
如果我们需要增加间隔,如何确定何时这样做?
您的处理程序过去常常在 10 之后调用服务器响应 sec.But 这完全取决于您的互联网速度以从服务器获取数据,这就是它需要很长时间的原因
您可以计算作业的持续时间并根据持续时间postDelayed您的处理程序。
例如:
startTime = System.currentTimeMillis();
//your job
duration = System.currentTimeMillis() - startTime;
mInterval = mInterval - duration