Wątek
Wątek to współbieżna jednostka wykonania. Posiada własny stos wywołań. Istnieją dwie metody implementacji wątków w aplikacjach.
Jednym z nich jest zapewnienie nowej klasy, która rozszerza Thread i przesłania jej metodę run (). Drugim jest dostarczenie nowej instancji Thread z obiektem Runnable podczas jej tworzenia. Wątek można wykonać, wywołując jego metodę „start”. Możesz ustawić „Priorytet” wątku, wywołując jego metodę „setPriority (int)”.
Wątek może być używany, jeśli nie masz wpływu na część interfejsu użytkownika. Na przykład dzwonisz do jakiejś usługi internetowej lub pobierasz jakieś dane, a po pobraniu wyświetlasz je na ekranie. Następnie musisz użyć programu obsługi z wątkiem, co skomplikuje obsługę wszystkich odpowiedzi z wątków w aplikacji.
Handler umożliwia wysyłanie i przetwarzanie obiektów Message i Runnable skojarzonych z MessageQueue wątku. Każdy wątek ma każdą kolejkę komunikatów. (Podobnie jak lista zadań do wykonania), a wątek przyjmie każdą wiadomość i przetworzy ją, aż kolejka wiadomości będzie pusta. Tak więc, gdy Handler komunikuje się, po prostu przekazuje wiadomość do wątku wywołującego i będzie czekał na przetworzenie.
Jeśli używasz wątków Java, we własnym kodzie musisz uwzględnić następujące wymagania:
Synchronizacja z wątkiem głównym w przypadku publikowania wyników z powrotem w interfejsie użytkownika Brak wartości domyślnej do anulowania wątku Brak domyślnej puli wątków Brak wartości domyślnej do obsługi zmian konfiguracji w systemie Android
AsyncTask
AsyncTask umożliwia prawidłowe i łatwe korzystanie z wątku interfejsu użytkownika. Ta klasa umożliwia wykonywanie operacji w tle i publikowanie wyników w wątku interfejsu użytkownika bez konieczności manipulowania wątkami i / lub programami obsługi. Zadanie asynchroniczne jest definiowane przez obliczenia, które są uruchamiane w wątku w tle i których wynik jest publikowany w wątku interfejsu użytkownika.
AsyncTask przejdzie przez następujące 4 etapy:
onPreExecute ()
Wywoływane w wątku interfejsu użytkownika przed wykonaniem zadania
doInbackground (Params ..)
Wywoływane w wątku w tle natychmiast po zakończeniu wykonywania onPreExecute ().
onProgressUpdate (Progress ..)
Wywoływane w wątku interfejsu użytkownika po wywołaniu metody PublishedProgress (Progress ...).
onPostExecute (wynik)
Wywoływane w wątku interfejsu użytkownika po zakończeniu obliczeń w tle.
Dlaczego warto używać AsyncTask?
Łatwy w użyciu dla wątku interfejsu użytkownika. (Więc używaj go, gdy wątek wywołujący jest wątkiem interfejsu użytkownika).
Nie ma potrzeby manipulowania Handlerami.