Chronometer集成自TextView,里面有个Handler负责定时更新ui。
其计时原理很简单:通过setBase(long t)方法设置好baseTime之后,当start()时,每隔一秒,用当前SystemClock.elapsedRealtime()减baseTime,得到的逝去时间显示在TextView中。
下面来个例子,这里除了start、stop功能,还利用setBase()添加个pause功能。
1 private Chronometer recordChronometer; 2 private long recordingTime = 0;// 记录下来的总时间 3 4 public void onRecordStart() { 5 recordChronometer.setBase(SystemClock.elapsedRealtime() - recordingTime);// 跳过已经记录了的时间,起到继续计时的作用 6 recordChronometer.start(); 7 } 8 9 public void onRecordPause() {10 recordChronometer.stop();11 recordingTime = SystemClock.elapsedRealtime()12 - recordChronometer.getBase();// 保存这次记录了的时间13 }14 15 public void onRecordStop() {16 recordingTime = 0;17 recordChronometer.setBase(SystemClock.elapsedRealtime());18 }