2017-09-25 11 views
0
내 메인 스레드 내 runnable 정의한 다음 아래와 같이 다른 스레드에 인수로 전달하려는

-사용자 정의 스레드에서 실행 가능한 인수를 실행 클래스

final Runnable runnable = new Runnable() { 
      @Override 
      public void run() { 

       Log.i("Running runnable",""); 
      } 
     }; 

Handler handler = new Handler() { 

    @Override 
    public void handleMessage(Message msg) { 
     super.handleMessage(msg); 

     text.setText(msg.obj.toString()); 
    } 
}; 

ThreadTest handlerThreadTest = new ThreadTest(runnable, handler); 
       handlerThreadTest.start(); 

ThreadTest 클래스는 다음과 같이 정의된다 -

public class ThreadTest extends Thread { 

private Handler handler; 
private Runnable runnable; 

public ThreadTest(Runnable runnable, Handler handler) { 

    this.handler = handler; 
    this.runnable = runnable; 
} 

@Override 
public void run() { 
    super.run(); 

    runnable.run(); 

    Message msg = handler.obtainMessage(); 
    msg.obj = "YUSSSSSS!"; 
    handler.sendMessage(msg); 
} } 

는 내가 로그 캣에서 아무 것도 볼 수 없기 때문에 작동하지 않는 것 내 핸들러하지만 runnable.run()에 "YUSSSSSS"메시지를 보낼 수 있어요.

어디서 이런 오류가 발생합니까?

답변

1

로그 캣은 빈 메시지를 삭제 로그에 일부 문자를 추가하는 경향이 당신은

Log.i("RunnableImpl", "Running runnable"); 
"실행 가능한 실행"의 TAG에서 뭔가를 볼 수 있습니다