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);

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

크리에이티브 커먼즈 라이선스Linsoo의 저작물인 이 저작물은(는)크리에이티브 커먼즈 저작자표시-동일조건변경허락 4.0 국제 라이선스에 따라 이용할 수 있습니다.

댓글 남기기

이메일은 공개되지 않습니다.

This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

This site uses Akismet to reduce spam. Learn how your comment data is processed.