The application is listening and displaying realtime location updates. Service is used to keep it active when the app is in background or screen is turned off. Location data is passed from Service to Activity using BroadcastReceiver.
Service — listens location updates and sends data to reciever
Activity — requests permissions, starts service and displays data
Smart Location Library — to simplify location quering
PermissionsDispatcher — to simplify permissions quering