run getLocation in the background to prevent blocking UI thread