2012년 8월 16일 목요일

Handler 메모리 릭 없이 쓰기.(Lint Warnings 제거)

Android 개발 하면서 메세지 처리를 위해서 Handler 를 이용한다. 보통 쓰는 방법은 아래와 같다.

  1. public class Parent
  2. {     
  3.     private Handler m_handlerProc = new Handler()
  4.     {
  5.         @Override
  6.         public void handleMessage(Message message)
  7.         {
  8.            ...
  9.         }
  10.     };
  11. }

쓰는데는 무리가 없지만 패키지 말을때 "Lint Warnings) 가 나타난다.

해서 Warnings 을 제거 하기 위해서는 코드를 아래와 같이 수정하면 된다.

  1. public class Parent
  2. {
  3.     static class InnerHandler extends Handler
  4.     {
  5.         WeakReference<Parent> m_HandlerObj;
  6.         InnerHandler(Parent handlerobj)
  7.         {
  8.             m_HandlerObj = new WeakReference<Parent>(handlerobj);
  9.         }
  10.  
  11.         @Override
  12.         public void handleMessage(Message message)
  13.         {
  14.             Parent handlerobj = m_HandlerObj.get();
  15.             ....
  16.         }
  17.     }
  18.  
  19.     private InnerHandler m_handlerproc = new InnerHandler(this);
  20. }

^^ 그럼 즐프들 하세요..


댓글 없음: