我已经检查了有关如何暂停/恢复计时器的所有答案,但找不到解决方案。
我创建了一个计时器任务,它计算员工的工作时间并将其放入 TextView 中进行显示。
代码如下:
Timer T = new Timer();
T.scheduleAtFixedRate(new TimerTask() {
@Override
public void run() {
runOnUiThread(new Runnable() {
@Override
public void run() {
String workingTime = "Your effort is "
+ format.format(Double.valueOf(hr)) + ":"
+ format.format(Double.valueOf(min)) + ":"
+ format.format(Double.valueOf(sec))
+ " till now for the day";
storeEffort.setText(workingTime);
sec++;
if (sec > 59) {
sec = 0;
min = min + 1;
}
if (min > 59) {
min = 0;
hr = hr + 1;
}
}
});
}
}, 1000, 1000);
where 商店努力是我的 TextView,它显示了卡在正在运行的线程中的工作时间(主要问题)。我想通过单击按钮暂停工作计时器,并在再次单击同一按钮时恢复计时器。还有其他方法可以完成此类任务吗?
您的解决方案可能有一个小问题 - 您正在使用计时器来计算时间间隔,但实际上没有必要。你可以使用即StopWatch http://docs.guava-libraries.googlecode.com/git/javadoc/src-html/com/google/common/base/Stopwatch.html#line.76来计算经过的时间。因此,您不必在计时器作业中添加秒数,而是可以从此计时器获取经过的时间。要暂停计时器,您可以调用stopWatch.stop()
要启动它,你可以调用stopWatch.start()
.
它可能看起来像这样:
Stopwatch stopwatch = Stopwatch.createStarted();
void startThreadUpdateTimer(){}
Timer T = new Timer();
T.scheduleAtFixedRate(new TimerTask() {
@Override
public void run() {
runOnUiThread(new Runnable() {
@Override
public void run() {
String workingTime = "Your effort is " + sw.toString() +
" till now for the day";
}
});
}
}, 1000, 1000);
}
public void pause(){
if(stopwatch.isRunning()){
stopwatch.stop();
}
}
public void resume(){
if(!stopwatch.isRunning()){
stopwatch.start();
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)