¿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?
- Understading ART / Dalvik compilación correctamente
- NFC API para Android NDK
- Conectar el dispositivo android a través de MQTT con ssl
- Android and javafx ligero marco de eventos compatible
- La forma más rápida y fácil de encontrar métodos en Java / Android que tardan un segundo o más en ejecutarse
- cómo detectar este gesto de movimiento específico a través de sensores?
- ¿Deshabilitar la validación del certificado SSL de la conexión HTTPS?
- Guardar ArrayList en la base de datos SQLite en Android
- SMS raw pdu en Android
- Añadir una biblioteca Android-studio
- Android: ¿Cómo configurar el volumen de MediaPlayer mediante programación?
- Android: Retroalimentación háptica: evento onClick () vs hapticFeedbackEnabled en la vista
- Cómo manejar arrastrar en una aplicación de ajedrez Android?
¿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.
- Ordenar una lista basada en otra lista
- No se pueden importar paquetes Session, Request, Response, GraphUser en android