我只看到有关如何在一定时间后做某事的文章,但我想知道如何在Android中做一些事情。
public void buttonClick(View v) {
currentUser.changeScore(10);
TextView tv = (TextView) findViewById(R.id.score);
tv.setText("Score: " + currentUser.getScore());
}
我希望用户能够在事件发生后按下按钮并获得10秒的积分。在那10秒之后,如果按下按钮,我希望用户失去10分。
答案 0 :(得分:3)
这很简单。每次事件发生时,设置一个变量,如下所示:
long positivePointEndTime = 0;
// In your event handler...
positivePointEndTime = System.currentTimeMillis() + 10000;
// Then in the button click handler
int scoreChange = System.currentTimeMillis() < positivePointEndTime ? 10 : -10;
currentUser.changeScore(scoreChange);
在这个时间间隔内,你不是真的想要定期更改 - 事件只是设置一个新的时间点作为点击“好”的边界按钮。不需要计时器或类似的东西。
(为了可测试性,您可能希望使用依赖注入Clock
类型或类似的东西来提供“当前时间”功能,但基本原理是相同的。)
答案 1 :(得分:0)
您可以使用计时器:
timerIsOn = true; // timerIsOn is boolean variable, must be visible for button click handler
TimerTask task = new TimerTask() {
@Override
public void run() {
timerIsOn = false;
}
};
Timer timer = new Timer();
timer.schedule(task, 10000);
然后按钮点击处理程序将是:
public void buttonClick(View v) {
if (timerIsOn) {
currentUser.changeScore(10);
} else {
// reduce score
}
TextView tv = (TextView) findViewById(R.id.score);
tv.setText("Score: " + currentUser.getScore());
}