Wątek interfejsu użytkownika jest dostępny przez cały okres widoczności aplikacji, która może obejmować kombinację wielu czynności.
coś zmienić w widokach należy wykonać na wątku UI i onPostExecute z AsyncTask odzwierciedla tę samą logikę, wykonując instrukcje wewnątrz na wątku UI.
Możesz użyć runOnUiThread we własnym Thread
, aby wprowadzić zmiany w widokach. Ale od AsyncTask ma onPostExecute metoda (która działa również na wątku UI), więc nie logicznie trzeba użyć runOnUiThread tam.
Aktualizacja
chodzi o Twoje pytanie: Tak, onPostExecute nadal będzie się nazywać (ponieważ jego wywoływane przez osobny wątek), nawet jeśli działalność jest zniszczona, a jeśli metoda będzie manipulować Widoki, po prostu otrzymasz komunikat o błędzie Force Close, ponieważ odwołanie do Twojej aktywności nie jest już dostępne.
'onPostExcecute' będzie działać, ale wyrzuci wyjątek, próbując uruchomić martwego wątku, jeśli twoja aktywność zostanie zniszczona. Jeśli masz uruchomioną funkcję AsyncTask, gdy twoja aktywność może być wyłączona, rozważ przeniesienie kodu do usługi lub za pomocą programu ładującego. – Jave
w przypadku Aktywność zniszczona: Zostanie rozbita, ponieważ utracono odniesienie z Aktywnością początkową. Incase Activity pauza, nadal działa na tej Aktywności. W tym scenariuszu: powinieneś używać usługi intencji i uzyskiwać wyniki za pośrednictwem rozgłaszania. –