7
votes

Le chronomètre ne s'arrête pas dans Android

Dans mon application, je veux montrer une montre d'arrêt de la minuterie. Lorsque j'ai cherché à Google, j'ai trouvé une option appelée chronomètre sur le site des développeurs. Il ressemble juste à une montre d'arrêt de la minuterie.

Lorsque je clique sur le bouton de démarrage, je veux que la minuterie commence à démarrer et que je clique sur le bouton PAUSE, la minuterie doit être suspendue lorsque je clique une fois que je devais commencer le début de l'heure été arrêté.

Mais dans ce chronomètre, il est démarré à partir de 0 et quand je clique sur Pause à 1min 10 secondes, il est en pause. Lorsque je clique encore une fois, commencez après 5min, la minuterie démarre le compte à partir de 6min 10sec, même à la pause, la minuterie est en cours d'exécution, comment arrêter cela et être repris à l'heure à laquelle il est arrêté.

suivi est Mon code pour chronomètre xxx


0 commentaires

4 Réponses :


2
votes

du chronomètre doc

arrêter de compter. Cela n'affecte pas la base étant définie de SetBase (Long), juste l'affichage de la vue.

Je n'ai aucun environnement de développement Android en ce moment, je ne peux donc pas en enquêter plus: (

éditer: est-ce le code Vous avez basé votre code sur? Il semble utiliser setebase à l'heure actuelle sur l'arrêt


0 commentaires

28
votes

Désolé, mais j'ai trouvé une solution moi-même et il semble beaucoup plus simple:

  1. Dans votre activité, déclarez une variable de membre (E.g. Lastpause) pour enregistrer l'heure de votre dernière pause:

    privé LONGPAUSÉE;

  2. Démarrez votre minuterie (supposez que la variable de votre minuterie est Crono):

    crono.setbase (systemclock.elapsédrealtime ());

    crono.start ();

  3. Pause Votre minuterie à chaque fois en utilisant:

    lastpause = systemclock.elapsédrealtime ();

    crono.stop ();

  4. reprend votre minuterie à chaque fois en utilisant:

    crono.setbase (crono.getbase () + systemclock.elapsédrealtime () - lastpause);

    crono.start ();

    Je n'ai pas testé la précision précisément pour le moment, car il semble que mes yeux:]


0 commentaires

0
votes

Les travaux suivants WONDERS:

final long lastPause = SystemClock.elapsedRealtime();
mChronometer.stop();

final AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(mActivity)
    .setCancelable(false)
    .setMessage("Stop chronometer while AlertDialog is asking something.")
    .setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
        public void onClick(DialogInterface dialog, int id) {
            dialog.cancel();
            mChronometer.setBase(mChronometer.getBase() 
                + SystemClock.elapsedRealtime() 
                - lastPause);
            mChronometer.start();
        }
    });
alertDialogBuilder.create().show();


0 commentaires

1
votes

J'ai fait face au même problème et je l'ai réparé à l'aide du code suivant:

chronometerInstance.setBase(SystemClock.elapsedRealtime());
chronometerInstance.stop();


0 commentaires