Getting location using LiveData and FusedLocationProviderClient
Let me explain how to work with LiveData - ViewModel and Activity.

Right now your BoundLocationManager looks good. I'd recommend not to make it's singleton. And also not consuming it directly in your UI (in this case WeatherFragment) code. 

It's highly recommended to keep LiveData in ViewModel and your ViewModel will provide it the UI. 

Also if you use LiveData, then never worry about removing the observer. It's done automatically for you.

Let me know if you still have some queries.