5

In meiner App habe ich Schaltflächen, wenn geklickt wird Abfrage der Datenbank und Ergebnis auf dem Bildschirm angezeigt. Die Abfrageaktion dauert normalerweise 1 bis 3 Sekunden. Diese Schaltflächen werden sehr oft angeklickt.Android - Unterschied zwischen Thread und AsyncTask?

Ich habe diese Aktion sowohl AsyncTask und Themen umgesetzt, aber sehr wenig anders sehen.

jedoch auf lange Sicht, vor allem, wenn die Tasten oft angeklickt werden, die mehr von Vorteil sein wird, in Bezug auf Ressourcen (CPU, Speicher)?

+0

AsyncTaskloader ist meine Vermutung: http://Stackoverflow.com/a/20279805/2413303 – EpicPandaForce

+0

Vielen Dank für Ihre Wiederholung EpicPandaForce. Ich habe den Link gelesen. Sie sagten: "Der AsyncTaskLoader kann durch Konfigurationsänderungen wie Bildschirmflips überleben". Aber die Abfrage ist kurz, ist es notwendig, die Konfigurationsänderungen auch zu behandeln? –

+0

@ngubk, ist es notwendig, Konfigurationsänderungen in fast allen Fällen – localhost

Antwort

5

Wenn Sie eine Thread verwenden, haben Sie das Ergebnis auf dem Hauptthread zu aktualisieren, um die runOnUiThread() Methode verwendet, während ein AsyncTask die onPostExecute() Methode hat, die nach doInBackground() kehrt auf dem Hauptthread automatisch ausführt.

Obwohl es keinen signifikanten Unterschied zwischen diesen beiden in Bezug auf "was ist vorteilhafter" gibt, denke ich, dass die AsyncTask Abstraktion entwickelt wurde, so dass ein Programmierer die UI & Worker-Threads nicht synchronisieren muss. Bei Verwendung eines Thread ist es möglicherweise nicht immer so einfach wie das Aufrufen von runOnUiThread(); es kann sehr schnell sehr knifflig werden. Also, wenn ich Sie wäre, würde ich AsyncTask verwenden und Thread für mehr spezialisierte Situationen halten.

+0

Danke für Ihre Antwort. Aber in meinem Fall benutze ich handler.sendMessage() im Thread statt runOnUiThread(), ist das gut oder AsyncTask ist immer noch besser? –

+0

Verwenden Sie 'Thread' oder' Hander'? –

+0

Meine Implementierung ist auf diese Antwort sehr ähnlich: http://stackoverflow.com/questions/13954611/android-when-should-i-use-a-handler-and-when-should-i-use-a-thread –

1

Ein AsyncTask wird verwendet, einigen Hintergrund Berechnung zu tun, und das Ergebnis an den UI-Thread (mit optionalem Fortschritt Updates) zu veröffentlichen. Da Sie sich nicht mit UI beschäftigen, scheint eine Handler oder Thread geeigneter zu sein.

Referenz: Handler vs AsyncTask vs Thread

+2

nicht um die UI zu behandeln? Er sagt, er muss die Ergebnisse auf dem Bildschirm anzeigen. –

Verwandte Themen