This Handler class should be static or leaks might occur 라는 경고가 뜰때…

안드로이드 개발을 하다가 보면 쓰레드에서 뭔가 UI에 갱신을 해야 하는 일이 생기는데 그냥 바로 수정하면 에러가 발생한다. 검색해보니 안드로이드 4.0 부터 바뀐거라고 함.

뭐 암튼 그래서 핸들러를 써서

private DateHandler dateHandler = new DateHandler();
    private class DateHandler extends Handler{
        public void handleMessage(Message msg){
        	 switch (msg.what){
                 case 0:	뭔가 작업;	break;
             }            
        }
    }

m_MSG = dateHandler.obtainMessage(0);
dateHandler.sendMessage(m_MSG);

이런식 으로 했더니만
This Handler class should be static or leaks might occur 이런 경고가 발생한다

이건 StackOverflow에서 나온걸론 메모리 릭을 발생할 수 있다고 함.
http://stackoverflow.com/questions/11407943/this-handler-class-should-be-static-or-leaks-might-occur-incominghandler 

뭐 그래서 거기 써 있는데로 수정함.

Handler dateHandler  = new Handler(new IncomingHandlerCallback());
    class IncomingHandlerCallback implements Handler.Callback{
        @Override
        public boolean handleMessage(Message msg) {
        	switch (msg.what){
            case 0: 뭔가 작업; break;
          }  
         return true;
        }
    }

m_MSG = dateHandler.obtainMessage(0);
dateHandler.sendMessage(m_MSG);

위 소스를 이렇게 작성하면 워닝이 뜨지 않는다.


Comments

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다