使用处理程序重复执行任务要比间隔花费更多时间

问题描述 投票:0回答:2

我从服务器获取数据,并且必须每隔x秒更新一次。我使用HandlerpostDelayed函数执行此操作。

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秒钟以上。在这种情况下我该怎么办?

如果需要增加间隔,如何确定何时这样做?

java android handler runnable
2个回答
0
投票

您的处理程序通常会在10秒钟后调用服务器响应。但是,这完全取决于您自己的互联网速度来从服务器获取数据,这是它花费时间较长的原因


0
投票

您应该使用比Handler更好的东西:-RxJava-Coroutines

并使用中间运算符控制您的流程(就像一个大男孩一样)

但是如果要继续使用Handler,可以设置侦听器,侦听器在工作完成时侦听,并且在工作未完成时不允许再次运行处理程序。

© www.soinside.com 2019 - 2024. All rights reserved.