-2
votes

Comment puis-je attendre correctement quelque temps entre deux appels de la même fonction?

J'ai donc essayé de faire une petite pause de deux secondes entre chaque fois que je veux écrire un nouveau message en utilisant "Settext".

    public void welcomeMessage(String message) throws InterruptedException {
     Handler handler = new Handler();
                handler.postDelayed(new Runnable() {
                    public void run() {
                         welcomeText.setAlpha(0f);
                         welcomeText.setText(message);
                         welcomeText.animate().setDuration(2000).alpha(1.0f);
                    }
                }, 2000);   //2 seconds
}


3 commentaires

Qu'est-ce que vous attendez exactement?


Bienvenue. "2 secondes de pause" C'est le premier message. "2 secondes de pause".


Assurez-vous que vous exécutez le code qui change l'interface utilisateur sur le thread ui : développeur.android.com/training/multiple-threads/.../a>


3 Réponses :


0
votes

Ce qui semble se produire est que votre gestionnaire est déclenché deux secondes après sa création, pas deux secondes après que le gestionnaire précédent ait fait sa chose.

Vous voudrez probablement définir des retards séparés sur chacun de vos messages de bienvenue. Cela signifierait 2 secondes pour le premier message, 4 secondes pour la seconde et 6 pour la troisième.


1 commentaires

Excellente nouvelle! N'oubliez pas de uploter et d'accepter (cochez) cette réponse.



0
votes

dans la méthode welcomemessage code> Vous créez un nouveau gestionnaire code> chaque fois que cela publie un r Runnable code> qui doit être exécuté différé sur le même thread que le gestionnaire code> a été créé.

Alors, que se passe-t-il que ces 3 runnables seront tous exécutés après votre 2000 millis, c'est donc pourquoi vous ne voyez que l'effacement de ce troisième exécutable. Donc, oui, vous pouvez les programmer avec un délai différent (il y a donc un écart de temps entre eux), soit 2000, 4000, 6000. P>

 public void welcomeMessage(String message, int delay) throws InterruptedException {
     Handler handler = new Handler();
                handler.postDelayed(new Runnable() {
                    public void run() {
                         welcomeText.setAlpha(0f);
                         welcomeText.setText(message);
                         welcomeText.animate().setDuration(2000).alpha(1.0f);
                    }
                }, delay);   
}

showMessage("hello", 2000);
showMessage("lets play the game", 4000);


1 commentaires

Merci beaucoup pour votre temps et pour votre réponse.



0
votes

Au lieu d'appeler une méthode trois fois et de la mettre dans le gestionnaire, essayez ceci

​​Stockez les messages dans une matrice de chaîne xxx

}


0 commentaires