让我们说在我的应用程序的各个方面,我创建并启动一个新的runnable,如下所示:
new Thread(new Runnable() {
public void run() {
while(true) {
//do lots of stuff
//draw lots of stuff on screen, have a good ol time
//total loop processing time abt 1250-1500ms
//check for conditions to stop the loop, break;
} } }
现在,有没有办法在我的while循环中的break;
以外的执行中途终止该线程?我希望能够直接从父线程中杀死它,就像用户刚刚请求加载不同的地图一样。在每5行左右的代码行之后插入if (stopFlag) break;
(在父线程中设置)感觉很笨拙。
我偷看了Runnable和Thread的方法,我只是看不到它。有人知道一个很棒的技巧吗?
答案 0 :(得分:3)
答案 1 :(得分:0)
当您应该停止Thread / Runnable时,您可以检查是否可以正确更改的条件或标志,而不是while (true)
。这似乎是suggested strategy,因为Thread.stop()已被弃用。
答案 2 :(得分:0)
你可以按照建议使用AsyncTask,这在这种情况下可能效果最好。我相信你也可以使用interrupt()方法,如果你不在Android中,那么它是首选,但仍然需要明确检查它是否被中断:
Thread t = new Thread(new Runnable() {
public void run() {
while (true) {
// do some stuff
if (isInterrupted()) {
break;
}
}
});
t.start();
// Whoa! Need to stop that work!
t.interrupt();