버튼을 Down했을때 쓰레드가 실행 되다가  Up하면 종료 하려합니다.

 

구글링 해보면 stop() 없어졌으니 사용하면 안되다 나왔고

 

interrupt()를 사용 하면 된다기에 사용했는데... 종료가 안됩니다.

 

버튼을 Down 하면 실행, Up 하면 종료. 다시 Down 했을때 실행 하려는데... 이때... already Thread start 어쩌구 하고 메세지 나옵니다.

 

아래 소스좀 봐주세요~!

 

질문의 요지는 쓰레드 종료인데... 종료 방법을 구글링해서 아래와 같이 해봐도 종료가 안되기에.. 뭘 잘못해나 하고 문의하는겁니다.

 

 //실행 하는 메인 메쏘드  
 mThreadX = new BackThreadX(mHandlerX);
  mThreadX.setDaemon(true);
  btnRight.setOnTouchListener(new View.OnTouchListener() {
   public boolean onTouch(View v, MotionEvent event) {
    switch (event.getAction()) {
    case MotionEvent.ACTION_DOWN:
     mThreadX.start();
     break;
    case MotionEvent.ACTION_UP:
     mThreadX.interrupt();
     break;
    }
    return false;
   }
  });
 /**
  * X축 핸들러
  */
 Handler mHandlerX = new Handler() {
     public void handleMessage(Message msg) {
      verticalParam.setMargins(msg.arg1, 0, 0, 0);
      lytVertical.setLayoutParams(verticalParam);
   Log.i("mHandlerX",""+mThreadX.interrupted());    
     }
    };
    /**
     * X축 스레드
      *
     */
 class BackThreadX extends Thread {
  Handler mHandlerX;
  BackThreadX(Handler handler) {
   mHandlerX = handler;
  }
  public void run() {
   Log.i("BackThreadX",""+Thread.currentThread().isInterrupted());
   while (!Thread.currentThread().isInterrupted()) {

     x++;
     Message msg = Message.obtain(mHandlerX, 0, x, 0);
     mHandlerX.sendMessage(msg);
     try {Thread.sleep(mSpeed);} catch (InterruptedException e) {;}
   }
  }
 }