Android Studio, как установить задержку внутри цикла? - PullRequest
0 голосов
/ 07 мая 2018

У меня есть цикл while, который мне нужно отложить, но я не могу. Я уже пробовал два метода, но ни один из них не работает. вот что я попробовал Мне нужно, когда я нажимаю кнопку mNavigate, чтобы запустить цикл и запустить его с задержкой. Я заявляю выше, что mNavMode является ложным

     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 голосов
/ 07 мая 2018

Я использовал второй вариант, используя Handler, он должен работать. Но похоже, что ваше while условие ложно, перед началом цикла вы устанавливаете mNavMode = !mNavMode, и если ваше mNavMode установлено на true раньше, чем ваше тело цикла никогда не будет выполнено.

...