android studio如何在循环内设置延迟?

时间:2018-05-07 18:57:01

标签: android loops delay

我有一个while循环,我需要延迟,但我不能。 我已经尝试了两种方法,但似乎都没有效果。 这是我尝试过的。我需要当我点击按钮mNavigate启动循环并延迟运行它。我在上面声明mNavMode为false

     mNavigate.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Log.d(TAG, "onClick: clicked NAV icon");
            mNavMode = !mNavMode;
            while (mNavMode){
                Log.d(TAG, "while: running");
                new CountDownTimer(10000, 2500) {
                    public void onFinish() {
                        Log.d(TAG, "onFinish: finish");
                    }

                    public void onTick(long millisUntilFinished) {
                        if (mNavMode){
                            getDevLoc();
                        }
                        Log.d(TAG, "onTick: ticked "+millisUntilFinished);
                    }
                }.start();
            }
        }
    });



  mNavigate.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Log.d(TAG, "onClick: clicked NAV icon");
            mNavMode = !mNavMode;
            Handler handler1 = new Handler();
            while (mNavMode){
                handler1.postDelayed(new Runnable() {
                    @Override
                    public void run() {
                        getDevLoc();
                    }
                }, 1000 );
                Log.d(TAG, "while: running");
            }
        }
    });

1 个答案:

答案 0 :(得分:0)

我使用了drange 20140222 20140321 drange 20151221 20160122 +1 month s=20151221 e=20160122 i="+1 month" drange $((s + 1)) $e $i 的第二个选项,它应该可行。但是,您的Handler条件似乎是假的,就在您开始设置while的循环之前,如果您的mNavMode = !mNavMode预先设置为mNavMode,那么您的循环体将永远不会执行。