How to create an infinite loop

微笑、不失礼 提交于 2019-12-07 04:46:46

问题


Ok,I need to create an infinite loop on a countdown. My code is:

public void countdown() {
    if (x != null) {
        x.cancel();
    }

    x = new CountDownTimer(20000, 1000) {
        public void onTick(long millisUntilFinished) {
        }

        public void onFinish() {
            showNotification();
        }
    };
    x.start();
}

x is just a static countdowntimer variable. The problem is that I tried many methods to make the above code work,I mean when the countdown ends,and it displays that notification,it should start again and so on....but I can't find a way to do it.


回答1:


Hope this will help you.

public void countdown(){
    if (x != null) {
        x.cancel();
    }
    x = new CountDownTimer(20000, 1000) {
       public void onTick(long millisUntilFinished) {
        }
       public void onFinish() {
           showNotification();
            x.start();
        }
    };
 }



回答2:


is to restart your timer when his has finished :) like this :

   x = new CountDownTimer(20000, 1000) {
            public void onTick(long millisUntilFinished) {
            }

            public void onFinish() {
                showNotification();
                start();// here, when your CountDownTimer has finished , we start it again :)
            }
        };
        x.start();



回答3:


For the record CountDownTimer(long millisInFuture, long countDownInterval)

  // A not so infinite but close to infinte interval for each second
  CountDownTimer cdt=new CountDownTimer(Long.MAX_VALUE, 1000) { .... }

Where Long.MAX_VALUE = 9223372036854775807 miliseconds or around 292 million of years (seconds more or less)

Its not infinite but its incredibly long.




回答4:


Simple way to create an infinite loop:

Every one secod call method

new CountDownTimer(1000, 1000) 
   {
        public void onTick(long l) {}
        public void onFinish() 
        {
          //Code hear
          start();
        }
    }.start();



回答5:


Why not just use a regular Timer? It will repeat on a specified interval until you call cancel(), something like:

public void countdown() { 
    if (x != null) {
        x.cancel();
    }

    x = new Timer("timerName");
    x.schedule(_timerTask, 0, 20000);
}

private static final TimerTask _timerTask = new TimerTask() {
    @Override
    public void run() {
        showNotification();
    }
};



回答6:


You can just use a while loop:
while (true) {
// do stuff
}

When it has done "the stuff" it wil start again, infinite!




回答7:


to keep your timer working just put

<countdowntime>.start(); 

in the onfinish block



来源:https://stackoverflow.com/questions/8278041/how-to-create-an-infinite-loop

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