Во-первых, я знаю, что LocationManager не нужно вызывать в AsyncTask, поскольку он уже не блокирует пользовательский интерфейс :)
У меня есть действие, которое 1. Получает текущее местоположение пользователей. 2. Вызывает веб-сервис для получения списка конкретных POI вокруг этого местоположения.
Пользователь может выбрать просмотр результатов в виде карты или списка с помощью TabActivity. Принимая это во внимание, AsyncTask для получения местоположения пользователей и вызова веб-службы управляется представлением TabActivity, а не одним из закрепленных представлений.
Итак, я хочу, чтобы TabActivity запускал AsyncTask, который сначала получает местоположение пользователей, а затем вызывает веб-сервис. Диалоговое окно прогресса предотвращает переключение видов с помощью вкладок во время этого процесса.
Почти все работает, кроме получения местоположения пользователей из AsyncTask. Написан код веб-сервиса, написан код отображения и оверлея, диалог выполнения задачи справляется с изменением ориентации.
Основное внимание при определении местоположения уделяется скорости, а не точности. Если пользователь решит просмотреть результаты на карте, я предоставлю кнопку «Мое местоположение», которая позволит получить более точное местоположение. Я просто хочу сначала получить приблизительное местоположение и быстро вернуть результаты поиска.
Может быть, я иду об этом неправильно. Может быть, мне следует отобразить представление карты, позволить активности карты найти текущее местоположение, а затем вызвать только веб-службу в асинхронном режиме, но что, если пользователь коснется вкладки представления списка на этапе определения местоположения? Я также собирался позволить пользователю указать свой вид по умолчанию — некоторые люди могут предпочесть список карте. В этом случае у меня был бы список, который должен был получить местоположение.
Спасибо за любой совет Мартин.