Бесконечно запускать таймер до нажатия кнопки? - PullRequest
0 голосов
/ 06 августа 2020

Как я могу добавить временные функции, которые не заканчиваются, пока кнопка не будет нажата еще раз? Это нормально запускает поток, но он не будет перезапущен, если я go не перейду на другую вкладку в приложении и go не вернусь к нему.

 metroStartBtn.setOnClickListener(new View.OnClickListener()
    {
        @Override
        public void onClick(View view)
        {
            metronomeOn = !metronomeOn;

            if(metronomeOn)
            {
                final Thread t = new Thread(new Runnable()
                {

                    @Override
                    public void run()
                    {
                        while(!toExit){
                            // Your code
                            try {
                                playSound(getContext(), 1);
                                Thread.sleep(100);
                            } catch (InterruptedException e) {
                                e.printStackTrace();
                            }
                        }
                    }
                });

                    t.start();

            }

            else
            {
                toExit = true;
            }

        }

    });

1 Ответ

1 голос
/ 06 августа 2020

Потому что после первого запуска toExit истинно, поэтому ваше while l oop не будет выполняться после этого

metroStartBtn.setOnClickListener(new View.OnClickListener()
    {
        @Override
        public void onClick(View view)
        {
            metronomeOn = !metronomeOn;

            if(metronomeOn)
            {
                final Thread t = new Thread(new Runnable()
                {

                    @Override
                    public void run()
                    {
                        while(metronomeOn){
                            // Your code
                            try {
                                playSound(getContext(), 1);
                                Thread.sleep(100);
                            } catch (InterruptedException e) {
                                e.printStackTrace();
                            }
                        }
                    }
                });

                t.start();

            }
        }

    });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...