¿Está haciendo la llamada de red segura en ArrayAdapter?

He desarrollado AutoCompleteTextView con la API de Google Places. Cuando el usuario escribe la dirección, estoy haciendo llamada de red a la API. He intentado simular el bloqueo, pero la solicitud se completa antes de poder cambiar la configuración.

public class PlacesAutoCompleteAdapter extends ArrayAdapter<Prediction> implements Filterable { private List<Prediction> resultList; public PlacesAutoCompleteAdapter(Context context, int textViewResourceId) { super(context, textViewResourceId); } @Override public int getCount() { return resultList.size(); } @Override public Prediction getItem(int index) { return resultList.get(index); } @Override public Filter getFilter() { Filter filter = new Filter() { @Override protected FilterResults performFiltering(CharSequence constraint) { FilterResults filterResults = new FilterResults(); if (constraint != null) { ShlepenApp.getGoogleRestClient().getPlaceList(GoogleService.API_KEY, constraint.toString(), new Callback<GooglePlacesListResponse>() { @Override public void success(GooglePlacesListResponse placesListResponse, Response response) { Log.i("TAGE", "SUCCESS"); resultList = placesListResponse.getPredictions(); notifyDataSetChanged(); } @Override public void failure(RetrofitError error) { Log.i("TAGE", "FAILURE"); //TODO: Post something useful here. } }); // Assign the data to the FilterResults filterResults.values = resultList; filterResults.count = resultList.size(); } return filterResults; } @Override protected void publishResults(CharSequence constraint, FilterResults results) { if (results != null && results.count > 0) { notifyDataSetChanged(); } else { notifyDataSetInvalidated(); } }}; return filter; } } 

EDIT: ¿Podría por favor elaborar lo que realmente sucede durante una llamada de red cuando giro el dispositivo? ¿Se perderá esta llamada y luego se recreará porque las letras están presentes en autotextview?

¿Podría usted explicar qué sucede realmente durante una llamada de red cuando giro el dispositivo? ¿Se perderá esta llamada y luego se recreará porque las letras están presentes en autotextview?

No he trabajado con Google Places API pero creo que esto puede ayudarte:

Cuando usted gira su dispositivo su actividad es matada y su adaptador pero el hilo que está haciendo la operación de la red existe y está haciendo su trabajo. Después de que ha terminado su trabajo va a decirle el resultado (llame a uno de los fallos de devolución de llamada o el éxito), pero no hay adaptador porque el antiguo es basura recogida y la dosis de hilo no acceso al nuevo adaptador por lo que está llamando Callback y en cada uno de los métodos que va a acceder al objeto null (private List<Prediction> resultList;) .

Según la documentación se invoca el método Filter.performFiltering() en un subproceso trabajado, por lo tanto no bloqueará la interfaz de usuario realizando su operación de E / S dentro de este método.

Fuente: http://developer.android.com/reference/android/widget/Filter.html#performFiltering(java.lang.CharSequence)

  • El botón Android Up no funciona
  • Android alarmmanager alarmas múltiples, uno sobrescribe el otro?
  • HtmlUnit en Android: Dependencias
  • El tipo de byte es extraño
  • Cómo obtener los valores adecuados de monitor de frecuencia cardíaca Polar
  • Problemas con ProGuard para Android con Parse 1.3.5 jar
  • ¿Qué es una clase de adaptador?
  • ANDROID: ¿Cómo obtener acceso root en una aplicación de Android?
  • Muchas imágenes enfocadas con una centrada en android?
  • GZIP en Android
  • ¿Los hilos añaden mucha sobrecarga a una aplicación?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.