평범한 개발자 행복한 가족, 패밀리그램

개발/안드로이드

AudioManager를 그냥 사용하면 메모리 누수 (Memory leak) 이 발생한다

패밀리그램 2018. 3. 27. 21:26

개발된 안드로이드 프로젝트의 Memory leak를 체크해 보기로 했다. 물론 GC가 알아서 해주는거 아니야 ? 라고 생각 할 수도있지만 


“A small leak will sink a great ship.” - Benjamin Franklin


https://github.com/square/leakcanary 에 있는 벤자민 프랭클린의 명언이다.


Memory leak 체크 라이브러리 - leakcanary

참 좋은 라이브러리이다. 안드로이드 스튜디오에 있는 프로 파일링으로 확인도 가능하지만, 해당 라이브러리를 사용하면 더 편리하게 앱의 메모리 누수를 체크 할 수 있다.

AudioManager를 Activity의 Context로 사용하면 ?

안드로이드 앱에 크게 발생하는 누수가 있었는데, 그게 AudioManager 에서 굉장히 큰 누수가 발생했다. Audio focus를 확인하는 Listener에서도 누수가 발생하니 꼼꼼히 체크하고 "null" 처리를 해주어야 한다.


Activity context로 AudioManager를 가져올 때 발생하는 누수를 막으려면 꼭 ApplicationContext 의 context로 가져와야한다.


이유는 구글링으로 잘 찾아보면 알 수 있다.


어쨋든 AudioManager는 ApplicationContext를 이용해서 가져와야 한다


반응형