2013年5月8日 星期三

Android程式設計 - 如何中止Thread

程式中時需要使用multithread進行背景作業, 但記得必須在程式結束前中止Thread。
查閱文件會發現不論destroy()方法或stop()方法都已聲明不應用來終止thread,而interrupt()方法也並不是用來終止thread。那麼到底該如何正確在應用程式結束時一併終止所建立的Thread,正確的作法是使用interrupt()方法並配合shared variable控制


  boolean RUN_THREAD = true;
  ...


  ocrThread = new Thread(){
    public void run(){
       while (RUN_THREAD){
         //執行緒作業
       }
    }
  };
  ocrThread.start();
  ...
  protected void onDestroy() {
      RUN_THREAD = false;
      ocrThread.interrupt();
      ocrThread = null;
  }