Я провел быстрый поиск и не увидел каких-либо конкретных ссылок на LocationManager, выполняющий асинхронный вызов, но я предполагаю, что это происходит или он запланирован таким образом, что это не влияет на производительность пользовательского интерфейса, поскольку это системная служба.
Из опыта у меня не было проблем с получением местоположения в главном потоке и отображением его обратно пользователю.Фактически я вычисляю расстояние около 100 элементов в списке без заметного замедления пользовательского интерфейса.В последнем калькуляторе я бы сказал, что вам следует подумать об AsyncTask, поскольку он может легко повлиять на производительность.Хотя также будьте осторожны с тем, как долго ваши задачи AsyncTask и интервал обновления обновлений местоположения LocationManager.
В зависимости от того, сколько времени занимает каждый вызов updateWithANewLocation, вы можете подумать о том, чтобы поместить это в фоновую задачу и оставить LocationManager в главном потоке.
Я предполагаю, что у вас возникла проблема с обработкой событий в LocationManager.Следующее должно дать некоторое представление об этой части проблемы:
http://developer.android.com/reference/android/location/LocationManager.html#requestLocationUpdates%28java.lang.String,%20long,%20float,%20android.location.LocationListener%29
Вызывающий поток должен быть потоком Looper, таким как основной поток вызывающего Activity.
http://developer.android.com/reference/android/os/Looper.html
По существу, когда ваш LocationAsyncTask завершил выполнение, он ушел, поэтому обратные вызовы событий происходят с потоком, который больше не существует.Looper инициирует цикл обработки сообщений, чтобы принять эти события LocationManager.