2016-01-24 28 views
2

我有一個工人ThreadHandler相關聯。 Handler收到Message,並在工作人員Thread中執行一些操作。我想「停止」ActivityThreadonPause()。在我的ActivityonPause()方法中,我向我的Handler發送退出消息,以便我的工作人員Thread將突破Looper.loop()並從run()返回。正確的方式來結束Android中的線程

  1. 這是停止Thread的正確方法嗎?如果不是,應該怎麼做?
  2. 我看到代碼示例調用t1.join()從主Thread其中t1是他們的工人Thread
    • join()的用途是什麼?
    • 在我的例子中,我需要做一個join()嗎?

我的工人Thread

class WorkerThread extends Thread { 
    private static final int QUIT = -1; 
    public Handler mHandler; 

    public void run() { 
     Looper.prepare(); 

     mHandler = new Handler() { 
      public void handleMessage(Message msg) { 
       // do stuff 

       if(msg.what == QUIT){ 
        Looper.myLooper().quit(); 
       } 

       // do stuff 
      } 
     }; 

     Looper.loop(); 
    } 
} 

回答

0

我沒有工作在Android,但在Java中的線程可以用下列方法停止 -

  1. 使用揮發性布爾標誌 - 在循環中使用此標誌(while(flag))。它繼續運行,直到國旗是真實的。如果你想停止線程集標誌爲false。

  2. 檢查中斷標誌 - 線程類中的靜態布爾方法爲Thread.interrupted(),它檢查中斷標誌。您可以通過調用Thread.interrupt()來中斷等待的線程。

Join()方法 - Join方法使當前線程等待線程死亡。當你有一些只有在線程完成執行後纔會被執行的邏輯時,纔會使用它。所以你不能使用join來停止一個線程,而是讓一個線程等待另一個線程的完成。

希望它有幫助。謝謝