Firebase is built on the premise of synchronizing data. For this reason there is never really a moment when it is done synchronizing.

The initial set of data for a location is downloaded in one go and results in a call to onChildAdded() for each child, followed by a single onDataChanged(). If you want to hide the progress bar when this initial data has loaded, you can register a ValueEventListener for a single event: