2016-01-24 26 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来停止一个线程,而是让一个线程等待另一个线程的完成。

希望它有帮助。谢谢