Dostałem nieco mylić o różnicach między Handlers, AsyncTaska Threadsw Androidzie. Przeczytałem sporo blogów i pytań tutaj w StackOverflow.
Handlerto wątki w tle, które zapewniają komunikację z interfejsem użytkownika. Na przykład aktualizacja paska postępu powinna odbywać się za pośrednictwem Handler. Korzystanie z programów obsługi ma tę zaletę MessagingQueues, że jeśli chcesz planować wiadomości lub aktualizować wiele elementów interfejsu użytkownika lub wykonywać powtarzające się zadania.
AsyncTasksą podobne, w rzeczywistości korzystają z nich Handler, ale nie działają w wątku interfejsu użytkownika, więc dobrze nadaje się do pobierania danych, na przykład usług sieciowych. Później możesz wchodzić w interakcje z interfejsem użytkownika.
Threadnie może jednak wchodzić w interakcje z interfejsem użytkownika, zapewnia bardziej „podstawowe” wątki, a brakuje wszystkich abstrakcji AsyncTask.
Chciałbym jednak mieć uruchomione połączenie z gniazdem. Czy należy to uruchomić w module obsługi, wątku, czy nawet w AsyncTask? Interakcja interfejsu użytkownika w ogóle nie jest konieczna. Czy ma to wpływ na wydajność, której używam?
Tymczasem dokumentacja została znacznie ulepszona.
Handlernie jest wątkiem i niczego nie wykonuje. To tylko sposób na bezpieczne przekazywanie wiadomości z jednego wątku do kolejki komunikatów innego wątku . Tak więc normalnie (przynajmniej) muszą zostać utworzone dwa wątki, które mogą następnie używać modułu obsługi, ale moduł obsługi nie może samodzielnie wykonać niczego.
