안드로이드 개발을 하다가 보면 쓰레드에서 뭔가 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);
위 소스를 이렇게 작성하면 워닝이 뜨지 않는다.
답글 남기기