EventBus로 Foreground Service로 Location 정보를 수집하는 과정에서
화면을 나왔다가 들어갈때 마다 계속 EventBus가 중첩되면서 늘어나는 현상 발생
처음에는 EventBus의 EventBus.getDefault().unregister(reg)
가 제대로 호출되지 않는 문제인줄 알았음
근데 코드는 거짓말을 하지 않는다고, Log를 찍어보면 분명 EventBus.getDefault().unregister(reg)
는 제대로 동작하고 있었음에도 혼자 의심하고 있었음
그래서 결국 다른 원인을 찾아보니. Service
에서 Location 정보를 받아오는 fusedLocationProviderClient
가 문제였음
Service
가 onDestroy()
될 때
fusedLocationProviderClient.removeLocationUpdates(locationCallback)
를 호출해서 위치 정보 호출도 중단해야됨
override fun onDestroy() {
fusedLocationProviderClient.removeLocationUpdates(locationCallback)
super.onDestroy()
}