0
votes

Comment vérifier les temps en millisecondes à Android

J'ai un chronomètre millisecondes qui fonctionne bien. Code du bouton: xxx pré>

exécutable: p> xxx pré>

fonction pour vérifier si le temps correspond: P>

 public void check(Integer secs, long milli){
    if (secs.equals(45) && milli.equals(367)){
        txtCheck.setText("done");
    }
}


5 commentaires

Qu'entendez-vous par cela ne fonctionne pas? Quel est le résultat attendu et qu'est-ce que vous obtenez à la place? Pourquoi utilisez-vous la méthode Pièce-ci avec retard de 0? Vous devez également formater votre code un peu mieux pour la lisibilité.


Un type de données primitive n'a pas de méthode égale. Vous devez utiliser «==» ou enveloppez-le avec long.parelong (); et une exécution n'est pas un thread, c'est une tâche qui peut être exécutée par un fil.


@NullDroid. J'ai changé le code pour le rendre plus clair (?). Je ne sais pas pourquoi suis-je en train d'utiliser .Postdélayed avec 0 retard (j'ai copié le code d'un didacticiel) et le chronomètre fonctionne.


@Linuxserver. Mêmes résultats avec votre suggestion.


Vous auriez pu essayer de «comparer» de Kotlin. Cela peut résoudre le problème.


3 Réponses :


0
votes

Avez-vous envisagé d'utiliser la classe Android Instant Classe comme décrit ici? https://developer.android.com/reference/kotlin/java/time/ Instant

Cela a été une aide énorme pour moi lorsque vous faites le même type de travail que vous êtes.


1 commentaires

Connaissez-vous un exemple de cette classe?



1
votes

Vous devez faire cela pour obtenir le en milliseconde: xxx


1 commentaires

Quelle est la différence entre System.Currenttimemillis et System.Usptimemillis? Devrais-je calculer 45 secondes et 367 millisecondes ou directement 45367 millisecondes?



1
votes

Il est probable que vos calculs prennent plus de 1 milliseconde. Vous ne devriez pas vérifier cela souvent. C'est cher et pas sûr. Pourquoi ne pas utiliser un Countowntimer ? Il fait le travail et il est basé sur des millisecondes.

 private long[] checkTimes = new long[]{ 45367L,90446L,25384L}; 
 for (int i = 0; i < checkTimes.length; i++) {
    new CountDownTimer(checkTimes[i], 1000) {

         public void onTick(long millisUntilFinished) {
             txtCheck.setText("seconds remaining: " + millisUntilFinished / 1000);
         }

         public void onFinish() {
             txtCheck.setText("done");
         }
      }.start();
 }


2 commentaires

Ça marche. Souhaitez-vous s'il vous plaît m'aider à le faire n fois? Je veux dire que je dois ajouter une fonction pour la répéter plusieurs fois (avec différentes longueurs).


ajouté une simple boucle.