Как я могу отложить несколько условных операторов if? - PullRequest
0 голосов
/ 16 июня 2020

Есть ли способ отложить оператор if для 1 se c перед выполнением другого условия if? я пробовал использовать работающий обработчик для каждого оператора, но он вылетал из приложения, я также использовал Thread.sleep (1000); но он просто зависает в пользовательском интерфейсе, пожалуйста, как мне решить эту проблему. Так я впервые использовал обработчик

final Handler Internet_handler = new Handler();
       final Runnable internet = new Runnable() {
           public void run() {if (EseCards_Slot1.isShown()) {
   EseCards_Slot1.performClick();
   bot_count++;
   Stop_Two_InstantPLay(); // stops 2 cards from playing i.e pick 2 and ride on
   botThinkdelay();// delays the if statement
}
           }
       };
       Internet_handler.postDelayed(internet, 1700);
if (EseCards_Slot1.isShown()) {
   EseCards_Slot1.performClick();
   bot_count++;
   Stop_Two_InstantPLay(); // stops 2 cards from playing i.e pick 2 and ride on
   botThinkdelay();// delays the if statement
}
if (EseCards_Slot2.isShown()) {
   EseCards_Slot2.performClick();
   bot_count++;
   Stop_Two_InstantPLay();
   botThinkdelay();
}
if (EseCards_Slot3.isShown()) {
   EseCards_Slot3.performClick();
   bot_count++;
   Stop_Two_InstantPLay();
   botThinkdelay();
}
if (EseCards_Slot4.isShown()) {
   EseCards_Slot4.performClick();
   bot_count++;
   Stop_Two_InstantPLay();
   botThinkdelay();
}
if (EseCards_Slot5.isShown()) {
   EseCards_Slot5.performClick();
   bot_count++;
   Stop_Two_InstantPLay();
   botThinkdelay();
}
if ((bot_count>0)&&(Ese_Turn_toPlay==true)) {
   Market.performClick();
   bot_count=0;
   botThinkdelay();
}

1 Ответ

0 голосов
/ 16 июня 2020

Думаю, можно использовать Handler (см. Как установить задержку в android? или Как использовать функции задержки в Android Studio? ). Код становится уродливым, но я знаю только несколько решений в Java для потока пользовательского интерфейса (CountDownTimer).

import android.os.Handler;

final Handler handler = new Handler();

if (EseCards_Slot1.isShown()) {
   EseCards_Slot1.performClick();
   bot_count++;
   Stop_Two_InstantPLay(); // stops 2 cards from playing i.e pick 2 and ride on
   handler.postDelayed(new Runnable() {
        @Override
        public void run() {
            if (EseCards_Slot2.isShown()) {
               EseCards_Slot2.performClick();
               bot_count++;
               Stop_Two_InstantPLay();
               // Here comes the next Handler.
               // It would be better to divide if statements into methods
               // and run them inside each new handler.postDelayed.
            }
        }
    }, 1000);

}

Вы должны удалить все обработчики после закрытия экрана.

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