每个延迟内的Android循环延迟

时间:2019-10-03 19:04:47

标签: android

我有以下代码:

                    Timer timer = new Timer();
                    timer.schedule(new TimerTask() {
                        public void run() {
                            for (int i = 0; i <= 10; i++) {

                                Log.d("LOG", "i: " + i);
                            }
                        }
                    }, 5000);

我想将I从0递增到10,并在循环内每次递增5秒。

当前,代码在5秒钟后执行并异步运行for循环,而不是在每次交互之间等待5秒钟。该代码大约需要一分钟才能完成。

2 个答案:

答案 0 :(得分:1)

您可以使用处理程序

int i = 0;
    private Handler handler = new Handler();
    private Runnable runnable = new Runnable() {
        @Override
        public void run() {
            if(i<11)
             {
               Log.d("LOG", "i: " + i);
               i++;
            }else
                handler.removeCallbacks(this);


            handler.postDelayed(this, 5000);
        }
    };
    //Start Handler
    handler.postDelayed(runnable, 5000);

答案 1 :(得分:1)

好的,所以可以在我使用Thread.sleep的延迟中循环进行for循环,但这将导致应用程序变为空白,直到它执行完for循环为止,因为它在UI上运行。为了克服这个问题,我在后台运行thread.sleep。完整代码如下:

        new Thread(new Runnable() {
            @Override
            public void run() {
                try {

                    for(int i=0;i<10;i++)
                    {
                        Thread.sleep(5000);
                        Log.d("LOG", "i: "+i);
                    }
                } catch (Exception e) {

                }
            }
        }).start();