Android - обработчик не работает в цикле

Я хочу сделать приложение, чтобы показать 3 элемента (каждые 2 секунды), и каждый начинает показывать после элемента before. Вот код:

public void gameStart()
{
    do
    {
        Handler handler = new Handler();
        handler.postDelayed(new Runnable()
        {
            public void run()
            {

                if (data == 1)
                {
                    CountDownTimer cdt = new CountDownTimer(2000, 1000)
                    {

                        @Override
                        public void onTick(long millisUntilFinished)
                        {
                            element1.setVisibility(View.VISIBLE);
                        }

                        @Override
                        public void onFinish()
                        {
                            element1.setVisibility(View.GONE);

                        }
                    }.start();

                } else if (data == 2)
                {
                    CountDownTimer cdt = new CountDownTimer(2000, 1000)
                    {

                        @Override
                        public void onTick(long millisUntilFinished)
                        {
                            element2.setVisibility(View.VISIBLE);
                        }

                        @Override
                        public void onFinish()
                        {
                            element2.setVisibility(View.GONE);

                        }
                    }.start();

                } else if (data == 3)
                {
                    CountDownTimer cdt = new CountDownTimer(2000, 1000)
                    {

                        @Override
                        public void onTick(long millisUntilFinished)
                        {
                            element3.setVisibility(View.VISIBLE);
                        }

                        @Override
                        public void onFinish()
                        {
                            element3.setVisibility(View.GONE);

                        }
                    }.start();

                } else if (data == 4)
                {
                    CountDownTimer cdt = new CountDownTimer(2000, 1000)
                    {

                        @Override
                        public void onTick(long millisUntilFinished)
                        {
                            element4.setVisibility(View.VISIBLE);
                        }

                        @Override
                        public void onFinish()
                        {
                            element4.setVisibility(View.GONE);

                        }
                    }.start();

                } else if (data == 5)
                {
                    CountDownTimer cdt = new CountDownTimer(2000, 1000)
                    {

                        @Override
                        public void onTick(long millisUntilFinished)
                        {
                            element5.setVisibility(View.VISIBLE);
                        }

                        @Override
                        public void onFinish()
                        {
                            element5.setVisibility(View.GONE);

                        }
                    }.start();

                } else if (data == 6)
                {
                    CountDownTimer cdt = new CountDownTimer(2000, 1000)
                    {

                        @Override
                        public void onTick(long millisUntilFinished)
                        {
                            element6.setVisibility(View.VISIBLE);
                        }

                        @Override
                        public void onFinish()
                        {
                            element6.setVisibility(View.GONE);

                        }
                    }.start();

                }

                id = id + 1;
                text.setText("cos " + id);
                data = random.nextInt(6) + 1;
            }
        }, 2000);
    } while (id <= 3);

}

Но если я запускаю приложение, оно начинает отставать. Приложение кричать вниз. Что я должен делать? И я тоже попробую это

public void gameStart()
{
    do
    {
                if (data == 1)
                {
                    element1.setVisibility(View.VISIBLE);
                    Handler handler = new Handler();
                    handler.postDelayed(new Runnable()
                    {
                        public void run()
                        {
                            element1.setVisibility(View.GONE);
                        }
                    }, 2000);

                } else if (data == 2)
                {
                    element2.setVisibility(View.VISIBLE);
                    Handler handler = new Handler();
                    handler.postDelayed(new Runnable()
                    {
                        public void run()
                        {
                            element2.setVisibility(View.GONE);
                        }
                    }, 2000);

                } else if (data == 3)
                {
                    element3.setVisibility(View.VISIBLE);
                    Handler handler = new Handler();
                    handler.postDelayed(new Runnable()
                    {
                        public void run()
                        {
                            element3.setVisibility(View.GONE);
                        }
                    }, 2000);

                } else if (data == 4)
                {
                    element4.setVisibility(View.VISIBLE);
                    Handler handler = new Handler();
                    handler.postDelayed(new Runnable()
                    {
                        public void run()
                        {
                            element4.setVisibility(View.GONE);
                        }
                    }, 2000);

                } else if (data == 5)
                {
                    element5.setVisibility(View.VISIBLE);
                    Handler handler = new Handler();
                    handler.postDelayed(new Runnable()
                    {
                        public void run()
                        {
                            element5.setVisibility(View.GONE);
                        }
                    }, 2000);

                } else if (data == 6)
                {
                    element6.setVisibility(View.VISIBLE);
                    Handler handler = new Handler();
                    handler.postDelayed(new Runnable()
                    {
                        public void run()
                        {
                            element6.setVisibility(View.GONE);
                        }
                    }, 2000);
                }

                id = id + 1;
                text.setText("cos " + id);
                data = random.nextInt(6) + 1;


    } while (id <= 3);

}

Но все элементы видны одновременно

0 ответов

Другие вопросы по тегам