Sto utilizzando la routine requestSingleUpdate() reoutine della libreria Android LocationManager con un LocationListener. La funzionalità che sto cercando di implementare è che l'utente può premere un pulsante e l'app otterrà la sua posizione corrente ed eseguire il geocoding inverso per ottenere l'indirizzo approssimativo.Impostare un timeout per la richiesta AndroidSingleUpdate
Il mio problema è che, a seconda della situazione di rete del dispositivo, la correzione della posizione potrebbe richiedere molto tempo. Come posso implementare un timeout che farà sì che il mio 'requestSingleUpdate()' si arrenda e avvisare l'utente di scoprire il proprio maledetto indirizzo?
il mio codice:
LocationManager locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
Criteria criteria = new Criteria();
criteria.setAccuracy(Criteria.ACCURACY_FINE);
criteria.setPowerRequirement(Criteria.POWER_HIGH);
locationManager.requestSingleUpdate(criteria, new LocationListener(){
@Override
public void onLocationChanged(Location location) {
// reverse geo-code location
}
@Override
public void onProviderDisabled(String provider) {
// TODO Auto-generated method stub
}
@Override
public void onProviderEnabled(String provider) {
// TODO Auto-generated method stub
}
@Override
public void onStatusChanged(String provider, int status,
Bundle extras) {
// TODO Auto-generated method stub
}
}, null);
Inoltre, se non è possibile fare riferimento myRunnable per qualche motivo, è possibile utilizzare myHandler. removeCallbacksAndMessages (NULL); anziché –