timing issues mean android doesn't always display the busy overlay when
geolocating so we need some belt and braces code to make sure this
happens