2012-04-26 186 views
0
thread = new Thread() 
     { 
      @Override 
      public void run() { 
       while(!requestedToExit) 
       { 
        SystemClock.sleep(3000); 
        Log.d("debug", "in"); 
       } 
      } 
     }; 

因此,一個按鈕有一個事件,每次我點擊它,它開始線程(如果前一個線程不活着)。第二次啓動線程

所以我嘗試使用thread.start(),但它拋出線程已經開始。我嘗試過.run(),沒有任何反應,我每次點擊按鈕時也嘗試過,並且可以再次運行它,創建一個新線程並啓動它:沒有任何結果。

有些想法?


使用Runnable接口:

r= new Runnable(){ 

      public void run() { 
       while(!requestedToExit) 
       { 
        Log.d("debug", "in"); 
        SystemClock.sleep(3000); 

       } 
      } 
     }; 

然後我在監聽器使用方法:

thread = new Thread(injection); 
thread.start(); 

但我只看到了第一次調試,他從來沒有後進入它。

在此先感謝

回答

5

JavaDoc -

這是從來沒有的法律,以啓動一個線程不止一次。特別是,線程在完成執行後可能不會重新啓動。

取而代之,使用java.lang.Runnable並創建一個新線程以在必要時運行它。

你需要做的是:

Runnable r = new Runnable() { 
    public void run() { 
     .... 
    } 
}; 

然後,當你想要啓動它:

Thread t = new Thread(r); 
t.start(); 

你需要始終創建一個新的線程來運行一個可運行。

+0

我編輯了我的第一篇文章。在此先感謝 PS:我想使用Thread和Runnable中的函數,.isAlive對我來說非常有用。 – Shinao 2012-04-26 12:02:43

+0

我重新編輯了我的第一篇文章。我不使用線程t =新的線程(r),但t =新的線程(r),因爲我在開始時定義它私人線程thread = new Thread();,否則我不知道我的線程isAlive時間,但我認爲這不是問題,因爲我使用新的線程()。感謝您的幫助 – Shinao 2012-04-26 13:08:51

+0

上帝我遲到了,忘了設置requestedToExit在虛假...謝謝 – Shinao 2012-04-26 14:40:11

相關問題