안녕하세요~ 안드로이드르 막 입문하게된 초보입니다.

지금 mp3 음원 재생프로그램을 만들어 보고 있는데요~

재생시 막대 progressBar를 사용하여 재생상태를 보여줄려고 하는데요.

문제는 Thread 아래와 같이 사용하고 정지시 Thread를 stop시키면 에러가 발생합니다.

class ProgressThread implements Runnable {
  Thread th;

  public void run() {
   for(progress=0; progress<=(audioPlay.getDuration()/1000); progress++){
    pb.post(new Runnable() {
     @Override
     public void run() {
      pb.setProgress(progress);
     }
    });
    SystemClock.sleep(1000);
   }
  }
  
  public void stop(){
   th = null; // th.stop을 하여도 에러가 발생합니다. 하여 null을 줘봤습니다.
  }
  
  public void start(){
   th = new Thread(this);
   th.start();
  }
 }

일단 stop을 하여도 에러가 발생하여 Thread를 null을 줘봤습니다.

그랬더니 08-06 01:24:04.836: ERROR/AndroidRuntime(600): java.lang.IllegalStateException 에러가 나버리네요.

에러 발생 지점은  for(progress=0; progress<=(audioPlay.getDuration()/1000); progress++){  여기입니다.

일반적인 stop을 하였을 때는 08-06 01:21:54.506: ERROR/global(564): java.lang.UnsupportedOperationException 에러가 발생하구요.

제가 쓰레드를 사용을 안해봐서 뭐가 문제인지 잘모르겠습니다.

대충 듣기로는 Thread.stop을 하면 문제가 발생할 수 있다고 들었는데 어떤 방식으로 stop을 시켜줘야 되는건가요?