我从服务器获取数据,并且必须每隔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秒钟后调用服务器响应。但是,这完全取决于您自己的互联网速度来从服务器获取数据,这是它花费时间较长的原因
您应该使用比Handler更好的东西:-RxJava-Coroutines
并使用中间运算符控制您的流程(就像一个大男孩一样)
但是如果要继续使用Handler,可以设置侦听器,侦听器在工作完成时侦听,并且在工作未完成时不允许再次运行处理程序。