Programatically reduce time interval in handler. Android

♀尐吖头ヾ 提交于 2019-12-12 03:54:51

问题


When you use the postDelayed function on a handler, a delayMillis variable is required to specify the time after which the handler runs. I want my handler to repeat indefinitely so I have nested two postDelayed functions.

    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);

However using this method, the time between the run() calls is fixed. Since the inner postDelayed requires a final integer as a parameter. I want to reduce the time between consecutive calls. Is there a way to do so?


回答1:


This should do what you want.

    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);



回答2:


You could set the limit inside postDelayed

final Handler handler = new Handler();

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

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


来源:https://stackoverflow.com/questions/35580672/programatically-reduce-time-interval-in-handler-android

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!