Как правильно сделать while?

Интерфейс, диалоги, темы, стили, меню
Ответить
starshas
Сообщения: 57
Зарегистрирован: 22 сен 2013, 17:38

Как правильно сделать while?

Сообщение starshas » 27 фев 2015, 22:43

Добрый вечер. У меня при нажатии на кнопку воспроизводится музыка, и пока она воспроизводится должна быть анимация. После запуска программы и нажатия кнопки, зависает программа. Вот мой код :

Код: Выделить всё

                        final Animation fallingAnimation = AnimationUtils.loadAnimation(getApplicationContext(),
                                R.anim.falling);

                        final Animation fallinAnimation = AnimationUtils.loadAnimation(getApplicationContext(),
                                R.anim.fallin);


                        while(mediaPlay.isPlaying() || mediaPlaye.isPlaying()) {

                            Thread thread = new Thread() {
                                @Override
                                public void run() {

                                    final ImageView moving = (ImageView) findViewById(R.id.moving);
                                    final ImageView movinn = (ImageView) findViewById(R.id.movinn);

                                    moving.startAnimation(fallingAnimation);


                                    try {
                                        Thread.sleep(500);
                                    } catch (InterruptedException e) {
                                        e.printStackTrace();
                                    }


                                    movinn.startAnimation(fallinAnimation);


                                    try {
                                        Thread.sleep(500);
                                    } catch (InterruptedException e) {
                                        e.printStackTrace();
                                    }


                                }
                            };


                            thread.start();

Аватара пользователя
klblk
Сообщения: 1097
Зарегистрирован: 18 окт 2012, 11:17
Откуда: г. Красноярск

Re: Как правильно сделать while?

Сообщение klblk » 02 мар 2015, 07:45

0) Правильнее будет не постоянно проверять, играет музыка или нет, а ловить моменты, когда она начинает играть и когда заканчивать. Соответственно в эти моменты начинать и заканчивать анимацию.
1) Виснет потому что чушь написана: а) while в основном потоке (это и причина зависания); б) Общаетесь ко View не из UI потока (читаем уроки по Handler'ам); в) 100500 создаете новый Thread(), но запускаете его 1 раз и после цикла.

Ответить