Android: chronomètre persistant chronomètre. Comment définir les temps de démarrage? Qu'est-ce que le Chronomètre “de Base”?
J'ai un service qui s'exécute en arrière-plan. Chaque fois qu'il commence, je stocker dans la mémoire, le temps de démarrage en millisecondes:
startingTime = new Date().getTime();
Je veux afficher un chronomètre qui commence à compter lorsque le service démarre et ne s'arrête jamais jusqu'à ce que l'utilisateur appuie sur un bouton. Je veux permettre à l'utilisateur de quitter l'activité de rendu le chronomètre, faire quelques trucs, puis retour. Mais l'idée est que lorsque l'utilisateur retourne, je ne veux pas le chronomètre pour aller à 0:00 à nouveau. Insted je veux qu'elle affiche l'heure exacte qui a passé depuis que le service a commencé.
Je peux calculer la elapsedTime chaque fois que l'utilisateur de revenir à l'chronomètre activité:
elapsedTime = new Date().getTime() - startingTime;
Le truc c'est que je ne sais pas comment dire le chronomètre pour commencer à compter à partir de ce moment-là!
De le définir comme le chronomètre de base ne fonctionne pas. Peut someon expliquer ce qu'est exactement "de base" ou comment l'accomplir?
merci beaucoup!
BYE
OriginalL'auteur Santiago | 2010-02-24
Vous devez vous connecter pour publier un commentaire.
Vous pouvez utiliser Chronomètre.
Vous devriez également vérifier ce fil.
EDIT: La solution:
Grande réponse mec !!! Merci beaucoup !!!!
Grâce Macarse....j'étais à la recherche exacte de ce...j'ai passé de nombreuses heures sur ce....merci copain
Je ne comprends pas pourquoi c'est la solution, il n'utilise pas un service.
OriginalL'auteur Macarse
La base de temps est le temps que le
Chronometer
commencé à retardement. Vous pouvez définir à l'aide deChronometer.setBase()
. Vous devriez obtenir la base de temps en utilisantSystemClock.getElapsedTime()
. AppelsetBase()
avec l'heure de départ à chaque fois que leChronometer
est commencé. Si il y a un potentiel pour laActivity
être détruit et recréé lors de la minuterie est toujours actif, alors vous aurez besoin de tenir la base de temps quelque part à l'extérieur de laActivity
qui possède leChronometer
.OriginalL'auteur Graeme Duncan
Pour démarrer le chronomètre, vous devez utiliser le
setBase()
méthode de votre chronomètre avecSystemClock.elapsedRealTime()
. Juste comme ça:Mais si vous voulez commencer à un autre moment, vous devez soustraire le temps que vous voulez en millisecondes. Par exemple, vous voulez commencer votre Chronomètre en 10 secondes:
À 2 minutes:
Mais le problème, c'est que le Chronomètre affiche "00:00" le temps avant de commencer à compter, de le modifier pour votre temps que vous avez à faire :
OriginalL'auteur Elcresan
Étrange avec SystemClock.getElapsedTime(), j'ai fait quelques changements pour la normale avec l'aide de la date de début, comme
Ici enfant de Chronomètre ci-dessous, TimeView
Il suffit de copier et à utiliser, il fonctionne pour moi
stackoverflow.com/a/19774399/2590478
OriginalL'auteur Serhii Bohutskyi
Lorsque vous définissez la basetime avec .setBase(SystemClock.elapsedRealTime ()), la chronomether commence à compter à partir de 00h00, mais le temps qu'il stocke est le montant de millisecondes depuis le démarrage.
Lorsque vous utilisez .arrêter le décompte interne ne s'arrête pas, juste le temps que vous voyez sur l'horloge. Donc, si vous utilisez .commencer de nouveau, l'horloge de comptage des sauts à la vraie comte. Si vous souhaitez stocker le temps qui a passé depuis le début, vous avez à nouveau le Système de temps écoulé, et faire la différence avec les .setTime
OriginalL'auteur Caresth
Utilisation
SystemClock.elapsedRealtime()
à cet effet:OriginalL'auteur Elenasys
Cela fonctionne pour moi :
OriginalL'auteur faizal