마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

Handler 메모리 leak 관련

0 추천

Thread 에서 UI 작업을 하려면 Handler로 처리를 해야 하는데,

현재 스레드에서 myHandler.sendMessage(); 형식으로 호출하여

아래와같이 사용하고 있습니다.

Handler myHandler = new Handler(){
	public void handleMessage(android.os.Message msg){
		// Source Code
	}
};

이렇게 사용할 경우

This Handler class should be static or leaks might occur

이런 경고 메세ㅔ지가 출력이 되게 되는데요.

 

검색을 많이 해봤는데, 약참조 형식으로 Handler 클래스를 상속받은 클래스를 따로 생성하여

사용하라는 답이 대부분이었습니다.

그런데, 제가 잘못한 것인지..그렇게하면 에러가 나더라구요..

 

그래서 위소스 코드에서 

Handler myHandler = new Handler(Looper.getMainLooper()){
	public void handleMessage(android.os.Message msg){
                    //Source Code..
	}
};
	

와 같이 Looper.getMainLooper()를 인자로 추가시키니 

경고메세지는 사라졌습니다. 에러도 안나고 핸들러 정상작동되구요..

 

이렇게 해결해도 정상적인 해결 방법인가요?

우선 노란줄이 없어지니 보기 시원하고 마음이 후련하긴한데..

어딜가도 Looper.getMainLooper()로 경고메세지를 없애라는 답은 없어서

조금 불안하기두 하구요..

 

메모리관련하여 아무 문제 없을까요??

안드로이드로우 (15,740 포인트) 님이 2014년 10월 21일 질문

답변 달기

· 글에 소스 코드 보기 좋게 넣는 법
· 질문에 대해 추가적인 질문이나 의견이 있으면 답변이 아니라 댓글로 달아주시기 바랍니다.
표시할 이름 (옵션):
개인정보: 당신의 이메일은 이 알림을 보내는데만 사용됩니다.
스팸 차단 검사:
스팸 검사를 다시 받지 않으려면 로그인하거나 혹은 가입 하세요.
...