Android终止通过runnable创建的线程

时间:2011-05-10 21:46:28

标签: android multithreading terminate runnable

让我们说在我的应用程序的各个方面,我创建并启动一个新的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的方法,我只是看不到它。有人知道一个很棒的技巧吗?

3 个答案:

答案 0 :(得分:3)

您可以使用AsyncTask并致电cancel取消该帖子。

答案 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();