LazyColumn에서 스크롤 하여 NaverMap이 사라집니다. -> MapView.onPause(), MapView.onStop(), MapView.onDestroy()가 호출되지 않아 메모리 해제가 되지 않습니다. -> 다시 스크롤하여 새로운 NaverMap이 생성됩니다. -> 네이티브 메모리가 누수됩니다.
Accompanist의 AnimatedNavHost 안에서 NaverMap을 사용합니다. A Destination 에서 B Destination 으로 이동합니다. -> B Destination에는 NaverMap이 있습니다. B Destination 에서 A Destination으로 돌아옵니다. MapView.onDestroy()가 호출되지 않습니다. -> 네이티브 메모리가 누수됩니다.
수정내용
LifecycleEventObserver 구현체에서 사용된 이벤트(ON_PAUSE, ON_STOP, ON_DESTROY)를 기록합니다. onDispose { ... }에서 LifecycleEventObserver.receivedEvents를 참고하여 직접 MapView.onPause(), MapView.onStop(), MapView.onDestroy()를 호출해주어야 하는지 체크합니다.
라이브러리 버전
1.1.2
이슈
LazyColumn
에서 스크롤 하여NaverMap
이 사라집니다. ->MapView.onPause()
,MapView.onStop()
,MapView.onDestroy()
가 호출되지 않아 메모리 해제가 되지 않습니다. -> 다시 스크롤하여 새로운NaverMap
이 생성됩니다. -> 네이티브 메모리가 누수됩니다.AnimatedNavHost
안에서NaverMap
을 사용합니다. A Destination 에서 B Destination 으로 이동합니다. -> B Destination에는NaverMap
이 있습니다. B Destination 에서 A Destination으로 돌아옵니다.MapView.onDestroy()
가 호출되지 않습니다. -> 네이티브 메모리가 누수됩니다.수정내용
LifecycleEventObserver
구현체에서 사용된 이벤트(ON_PAUSE, ON_STOP, ON_DESTROY)를 기록합니다.onDispose { ... }
에서LifecycleEventObserver.receivedEvents
를 참고하여 직접MapView.onPause()
,MapView.onStop()
,MapView.onDestroy()
를 호출해주어야 하는지 체크합니다.