title: How to stop this thread in android?
body: <p>In my application i am using this thread to rotate the Second hand on the clock. But the Problem is while i close the activity, the thread is still remain run. I want to stop the thread so it can not effect the Bettry of the device.</p>
  
  <p>Below is my Activity code where i am rotating the Clock's Second Hand:</p>
  
  <pre><code> public class ClockActivity extends Activity implements OnClickListener{
      private Button chimeBtn;
      private ImageView img;
      private Thread myThread = null;
  
      @Override
      public void onCreate(Bundle savedInstanceState){
          super.onCreate(savedInstanceState);
          setContentView(R.layout.clock_layout);
  
  
          Runnable runnable = new CountDownRunner();
          myThread = new Thread(runnable);
          myThread.start();
  
          chimeBtn = (Button) findViewById(R.id.chimeBtn);
          chimeBtn.setOnClickListener(this);
      }
      @Override
      public void onClick(View v) {
          switch(v.getId()){
              case R.id.chimeBtn:
                  playSound(R.raw.one_bell);
                  break;
          }
      }
      public void playSound(int resources){
  
           MediaPlayer mp = MediaPlayer.create(getApplicationContext(), resources);
              mp.start();
  
  
      }
  
      private void doPlay(){
          new Thread(new Runnable() {
  
              @Override
              public void run() {
                  // TODO Auto-generated method stub
  
                  Log.v("log_tag", "this is seocond thread");
  
              }
          }).start();
      }
      public void doRotate() {
  
          runOnUiThread(new Runnable() {
              public void run() {
                  try {
  
                      Date dt = new Date();
                      int hours = dt.getHours();
                      int minutes = dt.getMinutes();
                      int seconds = dt.getSeconds();
                      String curTime = hours + ":" + minutes + "::" + seconds;
                      Log.v("log_tag", "Log is here Time is now" + curTime);
                      img = (ImageView) findViewById(R.id.imgsecond);
                      RotateAnimation rotateAnimation = new RotateAnimation((seconds - 1) * 6, seconds * 6,
                              Animation.RELATIVE_TO_SELF, 0.5f,Animation.RELATIVE_TO_SELF, 0.5f);
  
                      rotateAnimation.setInterpolator(new LinearInterpolator());
                      rotateAnimation.setFillAfter(true);
  
                      img.startAnimation(rotateAnimation);
                  } catch (Exception e) {
                      Log.e("log_tag", "Error msg is " + e.toString());
  
                  }
              }
          });
      }
  
      @Override
      public boolean onKeyDown(int keyCode, KeyEvent event) { 
  
          if (keyCode == KeyEvent.KEYCODE_BACK) {       
              System.out.println("Back Key Press");
              if (myThread != null) {
  
                     myThread.interrupt(); //says that the myThread should stop 
                     try{ 
                             myThread.join(); //make this myThread wait for the other myThread to  finish before returning
                             myThread = new Thread();
                             myThread = null;
                     }catch(InterruptedException ie){ 
                             //handle the case if the thread.join is interrupt 
                             //don't know if this will ever happen, if it can... throw a runtime exception?, or reinterrupt? 
                             Thread.currentThread().interrupt(); 
                             //   reinterrupt because thrown exception cleared interrupt and hope it's handled elsewhere 
                     } 
  
              }
              System.out.println("Back Key Press");
              return true;       
          }       
          return super.onKeyDown(keyCode, event);     
      } 
  
      @Override
      public void onDestroy(){
  
          System.out.println("OnDestroy");
  
          super.onDestroy();
  
      }
  
      class CountDownRunner implements Runnable {
          // @Override
          public void run() {
              while (!Thread.currentThread().isInterrupted()) {
                  try {
                      // Log.v("log_tag", "Roate is going");
                      doRotate();
                      Thread.sleep(1000);
                      //doPlay();
                      } catch (InterruptedException e) 
                      {
                      // Thread.currentThread().interrupt();
                  } catch (Exception e) {
                      Log.e("log_tag", "Error is " + e.toString());
                  }
              }
          }
      }
  }
  </code></pre>
  
  <p>Thanks in advance.</p>