Geocoder no siempre devuelve un valor

Puedo obtener lat / long con éxito y pasarlo al geocodificador para obtener una dirección. Sin embargo, no siempre recibo una dirección. Parece que toma un par de intentos? No estoy seguro de por qué.

¿Hay alguna manera mejor de obtener la dirección en este momento?

public List<Address> getAddresses(){
          Geocoder geocoder = new Geocoder(getApplicationContext(), Locale.getDefault());
          List<Address> addresses = new ArrayList();
             try {
       addresses = geocoder.getFromLocation(latitude, longitude, 1);
      } catch (IOException e) {
       e.printStackTrace();
      }

      return addresses;
        }

Estoy llamando a este método aquí:

LocationListener onLocationChange=new LocationListener() {
        public void onLocationChanged(Location loc) {
            //sets and displays the lat/long when a location is provided
            String latlong = "Lat: " + loc.getLatitude() + " Long: " + loc.getLongitude();   
            latitude = loc.getLatitude();
            longitude = loc.getLongitude();

            List<Address> addresses = getAddresses();

            if(addresses.size() > 0 && addresses != null)
             zipcode = addresses.get(0).getPostalCode();

            Toast.makeText(getApplicationContext(), zipcode,Toast.LENGTH_SHORT).show();
        }

Respuestas a la pregunta(5)

Su respuesta a la pregunta