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

Thread에서 특정 Handler 찾기 질문 [closed]

0 추천

Thread에서 제가 원하는 핸들러를 찾지 못하는 문제가 있어서 고수님들께 질문 드립니다.

 

public class SubThread
{
 private String m_Value;
 private Thread m_Thread;

 public SubThread (String value)
 {
  m_Value = value;
 }

 final Handler m_Handler = new Handler ()
 {
  @Override
  public void handleMessage (Message msg)
  {
   Log.d ("XXX", "value : " + m_Value);
  }
 };

 public play ()
 {
  m_Thread = new Thread (new Runnable () {
   public void run ()
   {
    try {
     Random _rand = new Random ();
     Thread.sleep(_rand.nextInt () % 2000);
    }
    catch (Exception e) {
    }
    m_Handler.sendEmptyMessage (0);
   }
  });
  m_Thread.start ();
 }
}




public class MainActivity extends Activity
{
....
 public PlayAction ()
 {
  SubThread _thread_1 = new SubThread ("test1");
  SubThread _thread_2 = new SubThread ("test2");
  SubThread _thread_3 = new SubThread ("test3");
  SubThread _thread_4 = new SubThread ("test4");

  _thread_1.play();
  _thread_2.play();
  _thread_3.play();
  _thread_4.play();
 }
....
}

라는 코드가 있을때, 로그는 "test4"만 4번 찍히게 됩니다.

즉, MainActivity의 PlayAction함수에서 4개 스레드를 만들었는데, 각각의 스레드에서 부르는 핸들러는 마지막에 생성한 핸들러만 부르게 되네요.

 

따라서 제가 궁금한 점은 class SubThread에 포함된 각각의 Thread가 다른 클래스의 handler가 아닌 자신이 속해있는 class의 handler에만 sendMessage를 보낼 수 있는 방법이 있을지 궁금합니다. 위 코드 기준으로 제가 원하는 결과는 "test1", "test2", "test3", "test4" (순서야 상관없겠죠) 입니다.

 

고수님들의 조언 요청드립니다. 꾸뻑~!!

질문을 종료한 이유: 내용이 잘못된 질문입니다.
ekujb (180 포인트) 님이 2015년 6월 18일 질문
ekujb님이 2015년 6월 18일 closed
...