5

Nella mia app ho i pulsanti, quando cliccato interrogherò il database e mostrerà i risultati sullo schermo. L'azione di query richiederà normalmente 1 ~ 3 sec. Questi pulsanti verranno cliccati molto spesso.Android - Differenza tra thread e AsyncTask?

Ho implementato questa azione sia su AsyncTask che su Thread ma ne vedo poche differenze.

Tuttavia a lungo termine, soprattutto quando i pulsanti vengono cliccati più volte, il che sarà più vantaggioso in termini di risorse (CPU, memoria)?

+0

AsyncTaskloader è la mia ipotesi: http://stackoverflow.com/a/20279805/2413303 – EpicPandaForce

+0

Grazie per il replay EpicPandaForce. Ho letto il link. Hanno detto: "AsyncTaskLoader può sopravvivere attraverso modifiche di configurazione come i salti mortali". Ma la query è breve, è necessario gestire anche le modifiche di configurazione? –

+0

@ngubk, è necessario gestire le modifiche di configurazione in quasi tutti i casi – localhost

risposta

5

Quando si utilizza un Thread, è necessario aggiornare il risultato sul thread principale utilizzando il metodo runOnUiThread(), mentre un AsyncTask ha il metodo onPostExecute() che esegue automaticamente sul thread principale dopo doInBackground() ritorni.

Mentre non v'è alcuna differenza significativa tra i due in termini di "che è più vantaggioso", penso che il AsyncTask astrazione è stato messo a punto in modo che un programmatore non ha bisogno di sincronizzare i thread di lavoro UI &. Quando si utilizza uno Thread, potrebbe non essere sempre semplice come chiamare runOnUiThread(); può diventare molto complicato molto velocemente. Quindi, se fossi in te, mi limiterei a usare AsyncTask e mantenere Thread per situazioni più specializzate.

+0

Grazie per la risposta. Ma nel mio caso, io uso handler.sendMessage() nel thread invece di runOnUiThread(), è buono o AsyncTask è ancora meglio? –

+0

Stai usando 'Thread' o' Hander'? –

+0

La mia implementazione è molto simile a questa risposta: http://stackoverflow.com/questions/13954611/android-when-should-i-use-a-handler-and-when-should-i-use-a-thread –

1

Un AsyncTask viene utilizzato per eseguire alcuni calcoli in background e pubblicare il risultato sul thread dell'interfaccia utente (con aggiornamenti di avanzamento facoltativi). Dal momento che non ti interessa l'interfaccia utente, allora un Handler o Thread sembra più appropriato.

Riferimento: Handler vs AsyncTask vs Thread

+2

non interessato all'interfaccia utente? Dice che deve visualizzare i risultati sullo schermo. –

Problemi correlati