打开新活动时无限循环

时间:2014-10-26 10:00:56

标签: java android android-activity

在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,如果是,它应该打开另一个活动(i),并杀死当前的活动。然而,在30秒后,它会多次打开活动“i”而不是一次,就像无限循环一样。看起来旧的活动仍然在后台运行?我真的不知道原因。提前谢谢。

2 个答案:

答案 0 :(得分:1)

if ( ( time_end - time_start )/ 1000 > 30)

一旦点击> 30没有什么可以阻止它仍然存在> 30.你的计时器仍然在运行,因此每当它计时检查IF语句并相应地执行时。

如果您希望在计时器的整个生命周期内只发生一次,请在开始新活动之前停止计时器。

如果您希望每隔30天连续发生这种情况,请在开始新活动之前重新启动计时器。

答案 1 :(得分:0)

Handler.postDelayed是一种更有效的邮政检查方式。

试试这个:

new Handler().postDelayed(new Runnable() {
        @Override
        public void run() {
            startActivity(i);
            finish();
        }
}, 30 * 1000);
相关问题