Si vous regardez le code source du Chronomètre de la classe, vous verrez qu'il ne stocke pas le temps écoulé dans un champ, et il calcule en interne chaque fois qu'il doit mettre à jour l'affichage.
Cependant, il est relativement facile de faire la même chose dans votre propre code:
long elapsedMillis = SystemClock.elapsedRealtime() - chronometerInstance.getBase();
Cela suppose que vous avez commencé votre horloge à quelque chose comme ceci:
chronometerInstance.setBase(SystemClock.elapsedRealtime());
chronometerInstance.start();
Voici un exemple complet:
public class ChronoExample extends Activity {
Chronometer mChronometer;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
LinearLayout layout = new LinearLayout(this);
layout.setOrientation(LinearLayout.VERTICAL);
mChronometer = new Chronometer(this);
layout.addView(mChronometer);
Button startButton = new Button(this);
startButton.setText("Start");
startButton.setOnClickListener(mStartListener);
layout.addView(startButton);
Button stopButton = new Button(this);
stopButton.setText("Stop");
stopButton.setOnClickListener(mStopListener);
layout.addView(stopButton);
Button resetButton = new Button(this);
resetButton.setText("Reset");
resetButton.setOnClickListener(mResetListener);
layout.addView(resetButton);
setContentView(layout);
}
private void showElapsedTime() {
long elapsedMillis = SystemClock.elapsedRealtime() - mChronometer.getBase();
Toast.makeText(ChronoExample.this, "Elapsed milliseconds: " + elapsedMillis,
Toast.LENGTH_SHORT).show();
}
View.OnClickListener mStartListener = new OnClickListener() {
public void onClick(View v) {
mChronometer.start();
showElapsedTime();
}
};
View.OnClickListener mStopListener = new OnClickListener() {
public void onClick(View v) {
mChronometer.stop();
showElapsedTime();
}
};
View.OnClickListener mResetListener = new OnClickListener() {
public void onClick(View v) {
mChronometer.setBase(SystemClock.elapsedRealtime());
showElapsedTime();
}
};
}
Un peu déroutant chose à propos de Chronomètre, c'est que vous ne pouvez pas vraiment l'utiliser comme un chronomètre se met en marche, l'arrêt et le redémarrage de nouveau. Quand il est en cours d'exécution, il sera toujours montrer le temps écoulé depuis la dernière réinitialisation, peu importe combien de fois et pendant combien de temps vous avez arrêté dans le temps. Quand il est arrêté, il s'arrête tout simplement la mise à jour de l'affichage.
Si vous avez besoin de quelque chose comme un chronomètre, vous aurez à la sous-classe Chronomètre ou peut-être créer votre propre version à l'aide de la source.