Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/230.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 打开新活动时无限循环_Java_Android_Android Activity - Fatal编程技术网

Java 打开新活动时无限循环

Java 打开新活动时无限循环,java,android,android-activity,Java,Android,Android Activity,在Eclipse中处理android项目时,我遇到以下代码问题: / . . . myTimer = new Timer(); myTimer.schedule(new TimerTask() { @Override public void run() { TimerMethod(); }

在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”,而不是只打开一次,就像一个无限循环。看起来旧的活动仍在后台运行?我真的不知道原因。提前谢谢

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操作系统来处理它,而不需要你每次都检查它