2012-02-09 17 views
5

Sto lavorando su un'applicazione la cui responsabilità principale è contattare il server remoto e visualizzare i dati forniti.Chiamate di servizio sincrone su Android

Il servizio è basato su sapone. Per questo io uso la libreria ksoap, ma passiamo al caso.

Sono stato "servizio di chiamata" con l'uso di attività asincrone. Tutto sembrava andare bene, ma ...

Il servizio è sequenziale e tende a "perdere" le mie richieste, quindi non ottengo risultati corretti.

così ho deciso di adottare un approccio sincrono per risolvere il problema, ma in questo modo devo fornire ulteriori di carico pulsanti/bar ecc

La performance è terribile in questo modo. Qual è il modo migliore per gestire questo caso? Che tipo di sincronizzazione posso usare in modo che non ci siano razze tra le richieste?

Come posso utilizzare i servizi Android? Come stanno quelli meglio?

Grazie in anticipo per le risposte.

+0

Perché non si esegue l'AsyncTasks in sequenza, e solo se hanno successo? – dmon

+0

Cosa intendi esattamente chiamandoli in sequenza? – Olek

risposta

15

Si può effettivamente chiamare il AsyncTask in modo sincrono:

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

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

Vedere la docs page per AsyncTask

+1

Grazie per la rapida risposta. Hai provato tu stesso? Quindi dirlo a get() immagino che chiami semplicemente join() sul thread su cui viene eseguito. L'get() non sospende l'interfaccia utente o altre attività? Esistono meccanismi integrati per il controllo della coda Attività? – Olek

+0

Penso di aver risposto per lo più alla parte "sincronizzazione". Ho capito che volevi bloccare l'interfaccia utente finché non hai ricevuto la tua risposta. E almeno con onPreExecute e onPostExecute puoi tranquillamente avviare le barre di avanzamento e così via. –

+0

In realtà non voglio bloccare l'interfaccia utente. E sto cercando un modo per evitarlo. Sto cercando un modo per sincronizzare la maggior parte delle attività. – Olek

Problemi correlati