안녕하세요
요즘 만들고 있는 앱에서 메모리 leak이 많이 발생하는거 같아서
하나하나 조금씩 수정해 나가고 있습니다..
따로 프로젝트 복사해서 android Monitor의 메모리부분 비교해가면서 보완해나가고 있는데
Splash 화면에서 메모리leak이 발생하는걸 확인했습니다.
스플래쉬 화면 만드는 방법이 단순히 ImageView에 이미지를 Background 넣어서 딜레이 줘서
넘기는 방법도 있겠지만..
저는 theme으로 넣어서 스플래쉬 화면을 처리하고 있습니다..
<style name="SplashTheme" parent="Theme.AppCompat.NoActionBar">
<item name="android:windowBackground">@drawable/splash_bg</item>
<item name="android:windowContentOverlay">@null</item>
<item name="android:windowFullscreen">true</item>
</style>
이런식으로 해서 따로 딜레이 안주고 넘기는 방식으로 하고 있는데
(background 처리시간동안 보이는 스플래쉬)
어쨋든 그 시간 로딩이미지를 보여주고 다른 Activity로 넘어가게 되는데
제가 메모리를 확인해보니 다른 Activity로 넘어가도 이 이미지를 사용한? 메모리가 해제가 안됩니다..
원래 스플래쉬 이미지 적용전에 2.5MB(Allocated) 였는데 스플래쉬 적용후 11MB(Allocated)입니다..
다른 액티비티로 넘어가면 메모리 해제가 되야 될 것 같은데.. 해제가 안되네요 ㅠㅠ.
System.gc(); 같은걸 날려보아도 처리가 안되는것 같습니다..
따로 이미지를 넣었으면 null처리나 recycle 처리를 할 것 같은데, 이와같은 경우에는 어떻게 해야하나요?ㅠ
혹시 이와 관련해서 메모리 해제 하시는 방법 아시는분 도움좀 주시면 감사하겠습니다.
구글링좀 해봐도 원하는 답을 얻기 힘드네요..
아랫링크에서 질문하신 분이 저랑 코드는 좀 다르지만 어쨋든 비슷한 내용인것 같아서..(근데 답변이 없는 ㅠ)
http://stackoverflow.com/questions/28735464/how-to-remove-window-background-image-of-splash-screen-when-application-navigate