Android 我可以在运行时更改周期处理程序的间隔吗?

Android 我可以在运行时更改周期处理程序的间隔吗?,android,timer,handler,Android,Timer,Handler,我有一个perodic处理器: int interval = 35000; Runnable runnableForConsumption = new Runnable() { @Override public void run() { handler.postDelayed(runnableForConsumption, interval); new ConnectWSTask().execute();

我有一个perodic处理器

int interval = 35000;

Runnable runnableForConsumption = new Runnable() {
        @Override
        public void run() {

            handler.postDelayed(runnableForConsumption, interval);
            new ConnectWSTask().execute();
        }
    };

    void startRepeatingTask() {
        runnableForConsumption.run();

        }

    void stopRepeatingTask() {
        handler.removeCallbacks(runnableForConsumption);
    }
我希望第一次运行的间隔为2000ms,这次运行后的间隔为35000ms

是否可以在运行期间更改此处理程序的间隔

或者还有其他类似的方法吗?

您可以尝试以下方法:

    public void run(){

        handler.postDelayed(runnableForConsumption, interval);

        if(interval == 2000){
            interval = 3500;
        }
        new ConnectWSTask().execute();
    }

关键是在第二次
postDelayed

之前,将
interval
更改为3500,我认为这不起作用。当我调用
runnableForConsumption.run()时,run方法将执行一次一旦在postdelayed中设置了间隔,它将始终在此间隔中执行。还是我的想法是错误的?哦,好的。这真的很有效。我没想到。但情况正好相反。postdelayed后面的if子句。编辑我的答案。当您第一次调用
runnableForConsumption.run()
时,
间隔
为2000,在
run
方法中,间隔设置为3500,然后是
postDelayed
。然后,您的第二次
运行将安排在
currentTime+3500
。所有后续的
运行
将使用相同的延迟时间