Strategia di chiamata di servizi asynchronous Android

Ecco lo scenario:

  1. Il cliente effettua una chiamata remota al servizio (restituisce void) e fornisce un object di callback
  2. Il servizio esegue una certa logica di funzionamento lungo il thread di background e utilizza quindi l'object callback per triggersre il successo di ether o il fallimento che (in quanto questi manipolano gli elementi visivi) vengono eseguiti in Activity # runOnUiThread block

Lo scenario va bene. La domanda è – posso usare AsyncTask per rendere il codice less verboso (come?) E ci sarebbero dei vantaggi nel farlo in questo modo?

  • Come posso scrivere l'emulatore genymotion per lanciare un dato avd, senza testa?
  • Accendi Internet su Android quando dorme
  • Come disegnare le indicazioni stradali tra due geocodi in android google map v2?
  • android layout hide / show viste
  • Un modo semplice per creare l'UI Android?
  • Montaggio di un file di espansione obb apk crittografato in Android
  • O dovrei semplicemente allontanare da ricall i client e eseguire le chiamate di servizio remoto retrofitted per restituire un valore all'interno di AsyncTask # doInBackground?

  • App di session: errore Installazione di APK
  • Come aprire l'applicazione standard Google Map dalla mia applicazione?
  • Applicare filtri personalizzati all'output della camera
  • Mentre il filetto di caricamento di ParseLoginUI è un'attività lavorativa è visibile allo background
  • Ottieni il text selezionato da TextView
  • Come mantenere il servizio in esecuzione dopo la forza-stop?
  • 2 Solutions collect form web for “Strategia di chiamata di servizi asynchronous Android”

    È difficile dire se AsyncTask renderà le cose less verbose, in quanto non sappiamo la verbosità della vostra attuazione corrente.

    Per me, AsyncTask significa che non devo preoccuparmi di ripulire i thread (ad esempio, postare una sorta di lavoro di uccisione a un LinkedBlockingQueue mio thread di background sta aspettando). Elimina anche le classi di Job personalizzate create per l'utilizzo con LinkedBlockingQueues . E, semplifica un po 'di lavoro sul lavoro finale sul thread UI.

    Nel tuo caso, con un servizio remoto, il problema del thread dell'interface utente è less critico, in quanto l'attività deve gestirla in sé.

    Non vedo quale sia la differenza tra il tuo # 2 e il tuo ultimo paragrafo. In entrambi i casi il tuo servizio chiamerà l'object callback che utilizza qualcosa come runOnUiThread() per organizzare il lavoro da eseguire nel thread UI.

    AFAIK, i soli due modi per avere un servizio che esegue qualsiasi tipo di lavoro asincrono far sapere al cliente che il lavoro è fatto è da un Intent trasmissione o da un object di callback. Gli Intents trasmissione sono comodi, ma pubblici (ad esempio, altri codici possono guardare per loro).

    Sospetto che probabilmente non ho aiutato molto qui, ma non so sufficiente il tuo scenario per fornire maggiori dettagli.

    Sto avendo la stessa domanda: sto sviluppando un'attività mappe, con una funzionalità "lazy-loading" (xml da Network, analizzandola, quindi aggiornando la mia mappa con gli 'elementi' creati da quel parsing …)

    mi chiedevo quale sarebbe il modo migliore per attuarlo …

    • il servizio async lanciato da un thread, una notifica di aggiornamento tramite Intent?
    • solo un thread (nessun servizio, poiché non ho bisogno di esporlo ad altre applicazioni) w / callback
    • asyncTask con callback sto confrontando questo in termini di velocità, utilizzando l'analisi di performance SDK di Android Traceview dell'utensile

    Immagino che una risposta più precisa potrebbe essere trovata dai contribuenti di Android sul gruppo Android-developper …

    L'Android è un fan Android di Google, tutto su telefoni Android, Android Wear, Android Dev e applicazioni Android Games e così via.