gpt4 book ai didi

java - 打破后退按钮上的循环

转载 作者:行者123 更新时间:2023-11-30 03:43:38 26 4
gpt4 key购买 nike

我有一个包含两个 Activity 的 Android 应用。在这两个 Activity 的子 Activity 中,我在我的 run() 函数中运行一个无限的 for 循环。

我希望 Activity 在以下两种情况之一下返回到之前的 View :

  1. 当前日历秒达到HIGH_SEC (59)
  2. 用户点击后退按钮

两者中的第一个由以下代码满足:

Runnable mHideRunnable = new Runnable() {

@Override
public void run() {
for (;;) {
Calendar cal = Calendar.getInstance();
if (cal.get(Calendar.SECOND) == HIGH_SEC)
break;
System.out.println(cal.get(Calendar.SECOND));
try {
Thread.currentThread().sleep(1000);
} catch (Exception e) {
}
}
finish();
}
};

目前,当用户点击后退 按钮时,应用会卡住。我认为这是因为该 Activity 卡在了无限的 for 循环中。有谁知道如何检查 Back 按钮,以便我可以让我的代码做出适当的 react ?

最佳答案

你可以使用 onBackPressed()

@Override
public void onBackPressed() {
run = false;
}

然而,对于任何不符合正常行为的行为,我们不鼓励使用后退按钮。也许您应该制作一个专用的 UI 按钮?

与其使用 for(;;) {},恕我直言,使用 while(myBoolean) {}

更简洁

编辑:完整示例

private static volatile boolean run = true;

Runnable mHideRunnable = new Runnable() {

@Override
public void run() {
while (run) {
Calendar cal = Calendar.getInstance();
if (cal.get(Calendar.SECOND) == HIGH_SEC)
break;
System.out.println(cal.get(Calendar.SECOND));
try {
Thread.currentThread().sleep(1000);
} catch (Exception e) {
}
}
finish();
}
};

@Override
public void onBackPressed() {
run = false;
}

关于java - 打破后退按钮上的循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15355817/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com