作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个包含两个 Activity 的 Android 应用。在这两个 Activity 的子 Activity 中,我在我的 run()
函数中运行一个无限的 for
循环。
我希望 Activity 在以下两种情况之一下返回到之前的 View :
HIGH_SEC
(59)两者中的第一个由以下代码满足:
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/
我是一名优秀的程序员,十分优秀!