java - 打开新 Activity 时无限循环

标签 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,如果是,它应该打开另一个 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/

相关文章:

java - 初学者 Java 挑战

java - 数字类型的通用方法

android - 方向更改时的 LoaderManager 行为

java - Android 对 Activity 的弱引用在 Activity 执行时变为空

java - Android - 计算服务器目录中的文件数

java - 中断 EJB 查找

android - 用于获取运算符(operator)分配的 IP 地址的 adb 命令

java - 将图像文件从 RGB 转换为 YUV 的有效方法

android - 单击按钮后关闭 Activity 堆栈

android - 将抽屉导航项目与 fragment 同步