Java 打开新活动时无限循环
在Eclipse中处理android项目时,我遇到以下代码问题:Java 打开新活动时无限循环,java,android,android-activity,Java,Android,Android Activity,在Eclipse中处理android项目时,我遇到以下代码问题: / . . . myTimer = new Timer(); myTimer.schedule(new TimerTask() { @Override public void run() { TimerMethod(); }
/
.
.
.
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,如果是,它应该打开另一个活动(I),并终止当前活动。然而,30秒后,它会多次打开活动“i”,而不是只打开一次,就像一个无限循环。看起来旧的活动仍在后台运行?我真的不知道原因。提前谢谢
if ( ( time_end - time_start )/ 1000 > 30)
一旦这个值超过30,就没有什么可以阻止它继续超过30。您的计时器仍在运行,因此每次它都会检查IF语句并相应地执行
如果希望在计时器的整个生命周期内只发生一次,请在开始新活动之前停止计时器
如果希望每30分钟连续发生一次,请在开始新活动之前重新启动计时器。
处理程序。postDelayed
是一种更有效的后期检查方法
试试这个:
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
startActivity(i);
finish();
}
}, 30 * 1000);
你想要实现什么?30秒后,启动activity i,并杀死当前的activity i。好吧,让你知道,这更好,是android操作系统来处理它,而不需要你每次都检查它