Como esperar um segundo depois de cada, enquanto / por iteração do loop?

eniesee:

I tentar simular um jogo de futebol no Android Studio (linguagem: Java). I 90 gera números aleatórios. Cada iteração deve representar um minuto de partida. (Mas agora é apenas um segundo quando o teste). Após cada minuto jogado (neste caso segundo), os minutos e, possivelmente, a pontuação deve ser ajustada no aplicativo. Eu já testaram uma série de soluções que eu poderia encontrar na internet, tais como a solução da linha que aparece em todos os lugares. No entanto, isto não resultar no resultado que eu esperava.

resultado esperado: Um aplicativo que começa em 0 minutos e uma pontuação 0-0, aumentando o número de minutos de jogo por 1 a cada segundo, e também ajustando a pontuação se um gol é marcado.

A saída real: Uma tela branca para o número de milissegundos especificado no código, e em seguida, apenas o 'resultado final' do jogo. Por exemplo: 90' 2-1.

Já tentou colocar a try/catchoutra parte código no loop. Eu também têm substituído sleepcom wait. Isso sempre produz a mesma saída. Alguém pode me dizer como posso obter o número de segundos para subir ao vivo na tela e as mudanças de pontuação, assim que uma meta cai?

public void playLeagueMatch(Team team1, Team team2, TextView minuteTV,
                            TextView homeGoalsTV, TextView awayGoalsTV){

    int strength1 = team1.strength;
    int strength2 = team2.strength;
    int minutesPlayed = 0;
    double separation = Double.valueOf(strength1) / (Double.valueOf(strength1)+Double.valueOf(strength2)) * 100;

    int homeGoals = 0;
    int awayGoals = 0;

    for (minutesPlayed = 0; minutesPlayed < 91; minutesPlayed++) {
        String minuteName = Integer.toString(minutesPlayed);
        minuteTV.setText(minuteName + "'");

        int random = playMinute();

        if(random < 101){
            if(random <= separation){
                homeGoals++;
                homeGoalsTV.setText(Integer.toString(homeGoals));
            }
            else{
                awayGoals++;
                awayGoalsTV.setText(Integer.toString(awayGoals));
            }
            try{
                Thread.sleep(1000);
            }
            catch(InterruptedException e) {
                throw new RuntimeException(e);
            }
        }
    }
}

A função playMinute:

public int playMinute(){
    Random ran = new Random();

    int random = ran.nextInt(3500) + 1;

    return random;
}
appersiano:

Não use Thread.sleep()é uma prática ruim. Você pode usar um Countdown Timere em onTickexecutar o seuplayMinute()

new CountDownTimer(30000, 1000) {

    public void onTick(long millisUntilFinished) {
      Log.i("seconds remaining: " ,""+ millisUntilFinished / 1000);
    }

    public void onFinish() {
         Log.i("Timer Finished");
    }  
}.start();

Acho que você gosta

Origin http://43.154.161.224:23101/article/api/json?id=300384&siteId=1
Recomendado
Clasificación