以编程方式减少处理程序中的时间间隔。 Android

Programatically reduce time interval in handler. Android

当您在处理程序上使用 postDelayed 函数时,需要一个 delayMillis 变量来指定处理程序 运行s 之后的时间。我希望我的处理程序无限期地重复,所以我嵌套了两个 postDelayed 函数。

    final int initialdt = 1000;
    final Handler handler = new Handler();
    final Runnable r = new Runnable() {

        public void run() {

            handler.postDelayed(this, initialdt);
        }
    };
    handler.postDelayed(r, initialdt);

但是使用这种方法,运行() 调用之间的时间是固定的。由于内部 postDelayed 需要一个 final 整数作为参数。我想减少连续通话之间的时间。有办法吗?

这应该可以满足您的要求。

    final int initialDt = 1000;
    final Handler handler = new Handler();
    final Runnable r = new Runnable() {
        int dt = initialDt;
        public void run() {
            dt -= 100;
            if (dt >= 0) {
                handler.postDelayed(this, dt);
            }
        }
    };
    handler.postDelayed(r, initialDt);

你可以在里面设置限制 postDelayed

final Handler handler = new Handler();

        handler.postDelayed(new Runnable() {
            @Override
            public void run() {

                handler.postDelayed(this, limit);
            }
        }, 1000);