마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

쓰레드에 대해서...?

0 추천
class MyThread extends Thread{
  Context rContext;
  int icnt = 0;
  public MyThread(Context context) {
   rContext = context;
  }

  @Override
  public void run() {
   // TODO Auto-generated method stub
    blutoothReciveData();
  }
  public void stopThread(){
   
  }
  
  void blutoothReciveData(){
   handler.post(new Runnable() {
    
    @Override
    public void run() {
     cnt++;
     Toast.makeText(rContext, "cnt = "+cnt,1).show();
    }
   });
   
  }
}

MyThread myThread = new MyThread(mContext);
myThread.Start();

위와 같이 하면 한번뿐이 실행이 안됩니다
여러번 실행하게 할려면 어떻하나요?
헨씀히포 (3,660 포인트) 님이 2014년 2월 16일 질문
헨씀히포님이 2014년 2월 16일 수정

1개의 답변

0 추천
 
채택된 답변

간단하게 run 부분을 while로 바꾸시고 myThread.stopThread 호출 시 while 문을 종료 하도록 하시면 됩니다.

class MyThread extends Thread
  Context rContext;
  int icnt = 0;
  int boolean stopped = false;
  public MyThread(Context context) {
   rContext = context;
   stopped = false;
  }
 
  @Override
  public void run() {
   // TODO Auto-generated method stub
    while(!stopped) 
    {
      blutoothReciveData();
      try{ Thread.sleep(반복전 기다릴 시간) } catch(Exception e){}
    }
  }
  public void stopThread(){
    stopped = true;
  }
  
  void blutoothReciveData(){
   handler.post(new Runnable() {
    
    @Override
    public void run() {
     cnt++;
     Toast.makeText(rContext, "cnt = "+cnt,1).show();
    }
   });
   
  }
}
 
아니면 아래와 같이 핸들러를 사용해서 매번 수행 후 핸들러가 동작하게 해도 됩니다.
 
Handler handler = new Handler() {
    public void handlerMessage(Message msg) {
        switch(msg.what) {
            blutoothReciveData();
           handler.sendemptymessagedelayed(msg.what, 반복 전 기다릴 시간);
        }
    }
}
사악미소 (65,330 포인트) 님이 2014년 2월 16일 답변
헨씀히포님이 2014년 2월 16일 채택됨
...