Java 延长倒计时时间
为什么这个代码不起作用 这段代码应该将倒计时时间延长到10秒(每次当点为20、40、60时),等等。但是当我开始计时,并且我的分数为20时,它会在文本视图中显示正确的时间值。但是它在1秒后消失,倒计时时间得到旧值并继续。有人知道吗Java 延长倒计时时间,java,android,countdowntimer,Java,Android,Countdowntimer,为什么这个代码不起作用 这段代码应该将倒计时时间延长到10秒(每次当点为20、40、60时),等等。但是当我开始计时,并且我的分数为20时,它会在文本视图中显示正确的时间值。但是它在1秒后消失,倒计时时间得到旧值并继续。有人知道吗 int bonus_time = 1 , sec = 10000 , point == 0; points_timer =new CountDownTimer(sec,1000) { @Override public void o
int bonus_time = 1 , sec = 10000 , point == 0;
points_timer =new CountDownTimer(sec,1000) {
@Override
public void onTick(long millisUntilFinished)
{
if ( point == (bonus_time * 20))
{
++bonus_time;
millisUntilFinished += 10000;
sec += 10000;
}
++point;
}
@Override
public void onFinish()
{
bonus_time = 1;
}
};
没有办法扩展倒计时,类中没有方法提供此功能 你试图给
sec
增加时间是没有用的,我甚至想知道它是如何编译的。无论如何,在Java中,整数是按值传递的,所以一旦传递了1000
,就传递了它,并且不能更改该值
唯一有效的方法是重新创建一个新的计时器,并使用它来代替旧的计时器。或者重新编码所有内容,一个您自己可以扩展的计时器。
public void onTick(long millisUntilFinished)
是吗
millisUntilFinished += 10000;
当您使用
sec
变量为其时间创建计时器时,不能将参数赋值给primitive,并期望它更改该方法之外的任何内容(例如,millisUntilFinished的范围是onTick方法,仅此而已),它不会神奇地将两者连接起来,因此当sec
的值更改计时器的时间时,它只会在您创建计时器时使用sec
的值一次
更改millisuntiltfinished
也是一样,它是从回调中获得的一个参数,通过更改它的值,您没有做任何事情
更改计时器时间的唯一方法是创建一个新计时器。我的建议是:
// GLOBAL VARIABLES
CountDownTimer points_timer;
int bonus_time = 1 , sec = 10000 , point == 0;
public void createTimer()
{
points_timer =new CountDownTimer(sec,1000) {
@Override
public void onTick(long millisUntilFinished)
{
sec = millisUntilFinished;
if ( point == (bonus_time * 20))
{
++bonus_time;
//millisUntilFinished += 10000;
sec += 10000;
createTimer();
}
++point;
}
@Override
public void onFinish()
{
bonus_time = 1;
}
};
}
计时器的创建由一个函数包围,并且每次获得奖金以使用新值sec
重新创建计时器时,都会调用该函数
- 您还应该调用该方法一次,以代替以前的代码,从而最初创建计时器
希望这能奏效。谢谢!非常有用,这不会泄漏onTick回调,所以现在它每秒被调用两次?