2012-02-09 12 views
5

Estoy trabajando en una aplicación cuya responsabilidad principal es contactar al servidor remoto y mostrar los datos proporcionados.Llamadas de servicio síncrono en Android

El servicio se basa en el jabón. Para eso uso la biblioteca ksoap, pero vamos a cortar el caso.

He estado "llamando al servicio" con el uso de tareas asíncronas. Todo parecía ir bien, pero ...

El servicio es secuencial, y tiende a 'perder' mis solicitudes, por lo que no obtengo los resultados adecuados.

Así que decidieron tomar un enfoque sincrónico para resolver el problema, pero de esta manera tengo que proporcionan botones/barras de carga adicionales, etc.

El rendimiento es terrible de esta manera. ¿Cuál es la mejor manera de manejar este caso? ¿Qué tipo de sincronización puedo usar para que no haya ninguna carrera entre las solicitudes?

¿Cómo puedo hacer uso de los servicios de Android? ¿Cómo son esos mejores?

Gracias de antemano por las respuestas.

+0

¿Por qué no se ejecuta el AsyncTasks secuencialmente, y sólo si tienen éxito? – dmon

+0

¿Qué quieres decir exactamente llamándolos secuencialmente? – Olek

Respuesta

15

En realidad se puede llamar a la AsyncTask de un modo de sincronización:

class MyTask extends AsyncTask<Void,Void,String> 
{...} 

MyTask x = new MyTask(); 
String result = x.execute().get(); 

Véase el docs page para AsyncTask

+1

Gracias por la respuesta rápida. Lo has intentado tú mismo ? Entonces, diciéndole que obtenga(), supongo que simplemente llama a join() en el hilo en el que se ejecuta. ¿El get() no suspenderá la UI u otras tareas? ¿Hay algún mecanismo integrado para controlar la cola de tareas? – Olek

+0

Creo que respondí principalmente a la parte de "sincronización". Entendí que quería bloquear la IU hasta que haya recuperado su respuesta. Y al menos con onPreExecute y onPostExecute puede iniciar barras de progreso de forma segura, etc. –

+0

En realidad, no quiero congelar la IU. Y estoy buscando una manera de evitar esto. Estoy buscando una forma de sincronización de la mayoría de las tareas. – Olek

Cuestiones relacionadas