2014-05-19 126 views
-4

我已經搜索關於殺死Runnable,但我找不到這個代碼的真正答案。我嘗試過布爾和stop()method.Can有人幫我殺了這個runnable?謝謝。如何停止線程

Runnable runnable = new Runnable() { 
        @Override 
        public void run() { 

         while(true) { 
         try { 
          Thread.sleep(1000); 
         } catch (InterruptedException e) { 
          e.printStackTrace(); 
         } 

         MainActivity.this.runOnUiThread(new Runnable() { 
         @Override 
         public void run() { 
          myL.setBackgroundResource(R.drawable.close); 

         } 
        }); 
         try { 
          Thread.sleep(1000); 
         } catch (InterruptedException e) { 
          e.printStackTrace(); 
         } 

         MainActivity.this.runOnUiThread(new Runnable() { 
          @Override 
          public void run() { 
           myL.setBackgroundResource(R.drawable.open); 

          } 
         }); 
        } 
        } 
       }; 
       new Thread(runnable).start(); 
+0

它永遠不會停止。你有一個無限的'while'循環。 – Emmanuel

+0

請參閱http://stackoverflow.com/a/5915306/217324 –

回答

0

你可以設置你的退出條件:

private class MyThread extends Thread { 
    private boolean volatile exit = false; 
    @Override 
    public void run() { 
    while(!exit) { 
    } 
    } 

    public void stopMyThread() { 
     exit = true; 
    } 

} 

,並從你的代碼中調用

myThreadInstance.stopMyThread(); 

當你需要讓你跑得方法完成

+0

感謝它正在工作 – Sefa

0

你是無限重複一秒鐘等待。這永遠不會停止。您需要有一個boolean標誌作爲繼續/停止條件,並且您需要在線程需要停止時取消它的值。

如果您想從另一個Thread停止,請致電Thread.interrupt