我在 Eclipse 中处理 Android 项目时遇到以下代码问题:
/
.
.
.
myTimer = new Timer();
myTimer.schedule(new TimerTask() {
@Override
public void run() {
TimerMethod();
}
}, 0, 1000);
/
.
.
.
private void TimerMethod()
{
this.runOnUiThread(Timer_Tick);
}
private Runnable Timer_Tick = new Runnable() {
public void run() {
Time_Between();
}
};
public void Time_Between (){
time_end = System.currentTimeMillis();
if ( ( time_end - time_start )/ 1000 > 30)
{
startActivity(i);
finish();
}
}
我希望它做的是检查耗时是否>30,如果是,它应该打开另一个 Activity (i),并终止当前的 Activity 。然而,30 秒后,它会多次打开 Activity “i”,而不是只打开一次,就像无限循环一样。看起来旧的一项 Activity 仍在后台运行?我真的不知道原因。提前致谢。
最佳答案
if ( ( time_end - time_start )/ 1000 > 30)
一旦达到> 30,就没有什么可以阻止它仍然> 30。您的计时器仍在运行,因此每次它滴答作响时,它都会检查该 IF 语句并相应地执行。
如果您希望这种情况在计时器的整个生命周期中只发生一次,请在开始新 Activity 之前停止计时器。
如果您希望这种情况每 30 次连续发生一次,请在开始新 Activity 之前重新启动计时器。
关于java - 打开新 Activity 时无限循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26571816/