W interfejsie użytkownika, aby wykonać trochę pracy w tle, użyłem osobnego Thread
. Ale jak sugerowali inni, teraz używamAsyncTask
.
Jaka jest główna różnica między a Thread
i an AsyncTask
?
W którym scenariuszu powinienem użyć a Thread
czy an AsyncTask
?
Odpowiedzi:
W przypadku zadań długotrwałych lub wymagających dużej mocy obliczeniowej można to zrobić zasadniczo na dwa sposoby: wątki Java i natywne narzędzie AsyncTask systemu Android.
Żaden z nich nie jest koniecznie lepszy od drugiego, ale wiedza o tym, kiedy należy użyć każdego połączenia, jest niezbędna, aby wykorzystać wydajność systemu na swoją korzyść.
Użyj AsyncTask do:
Użyj wątków Java do:
W Internecie jest wiele dobrych zasobów, które mogą Ci pomóc:
http://www.vogella.com/articles/AndroidBackgroundProcessing/article.html
źródło
AsyncTask
własnego harmonogramu.Jeśli używasz wątków Java, musisz uwzględnić następujące wymagania we własnym kodzie:
źródło
Wątek
AsyncTask
źródło
Więcej informacji można znaleźć tutaj
źródło
Wątek:
Thread
powinien być używany do oddzielania długotrwałych operacji od głównego wątku, aby poprawić wydajność. Ale nie można go elegancko anulować i nie radzi sobie ze zmianami konfiguracji Androida. Nie możesz zaktualizować interfejsu użytkownika zThread
.AsyncTask
może być używany do obsługi elementów roboczych krótszych niż 5 ms. DziękiAsyncTask
, możesz zaktualizować interfejs użytkownika w przeciwieństwie do javaThread
. Jednak wiele długotrwałych zadań spowolni wydajność.Masz kilka alternatyw dla nich obu.
HandlerThread / Handler i ThreadPoolExecutor
Więcej informacji znajdziesz w poniższym poście:
Handler vs AsyncTask vs Thread
źródło