Я использую MyLocationOverlay, чтобы обновить карту с местоположением пользователей по мере их вождения. Я пытаюсь реализовать текстовое представление, которое показывает их текущее местоположение с точки зрения названия улицы, города и штата. Все это работает нормально, но кажется, что частота обновления MyLocationOverlay приводит к тому, что карта отстает и замерзнет на секунду или два. Я не уверен, что метод textsetText вызывает его замораживание или количество вызовов метода. Каков правильный способ обновления пользователя с именем города и состояния? Я использую новый поток, это правильный путь? Вот мой код в onLocationChanged методе MyLocationOverlay:Android: Лучший способ сделать обратное геокодирование в MyLocationOverlay?
@Override
public synchronized void onLocationChanged(Location location) {
super.onLocationChanged(location);
mLocation = location;
// only move to new position if enabled and we are in an border-area
if (this.isMyLocationEnabled() && animateToCurrentLocation) {
mMapController.animateTo(getMyLocation());
}
this.runOnFirstFix(new Runnable() {
public void run() {
Log.d(TAG, "Running");
if (mLocation != null) {
Geocoder gc = new Geocoder(mContext, Locale.getDefault());
try
{
List<Address> addresses = gc.getFromLocation(mLocation.getLatitude(), mLocation.getLongitude(), 1);
if (addresses != null && addresses.size() > 0)
{
txtStreetAddress.setText(addresses.get(0).getThoroughfare() + " " + addresses.get(0).getLocality() + ", " + addresses.get(0).getAdminArea());
}
} catch (IOException e)
{
}
}
}
});
}
Должен ли я быть геокодированием в отдельном потоке? или это целесообразно сделать в потоке пользовательского интерфейса? – user1347026
его блокирующий вызов так defo от потока пользовательского интерфейса :) – Dori