W onDestory fragmentu, wstawiłem kod do czyszczenia wszystkich oczekujących runnables zacząłem używać Handler.postDelayed.Handler.removeCallbacksAndMessages (null) i główny looper
mUiHandler.removeCallbacksAndMessages(null);
Mam tutaj pytanie. Czy można bezpiecznie wywoływać mUiHandler.removeCallbacksAndMessages (null) ;? Rozumiem, że Android wykonuje wszystkie operacje interfejsu użytkownika, takie jak układ interfejsu użytkownika, renderowanie interfejsu użytkownika, cykle życia komponentów (onCreate, onPause, onResume) w głównym looper. Czy rozumiem to poprawnie? Następnie, gdy wywołasz mUiHandler.removeCallbacksAndMessages (null) w fragmencie, zepsuje lub wyczyści wszystkie operacje UI systemu Android w kolejce komunikatów w głównym looperie, ponieważ w głównym looperie jest tylko jedna kolejka komunikatów.
Dzięki.
Dzięki kcoppock. Ale nadal jestem zdezorientowany. "Każda instancja Handler jest powiązana z pojedynczym wątkiem i kolejką komunikatów tego wątku." Każdy wątek powinien mieć jedną kolejkę komunikatów. Dobrze? Mój mUiHandler jest powiązany z głównym wątkiem, więc na dokumencie udostępni tę samą kolejkę komunikatów innym programom obsługi w wątkach interfejsu użytkownika. Czy coś ominąłem? – Kai
Mam to. Spojrzałem na kod źródłowy. Wykonuje "p.target == h" check in removeCallbacksAndMessages. Tak jak powiedziałeś, usuwa tylko wiadomości i wywołania zwrotne, które zostały wysłane do tego konkretnego Handlera. Dzięki! – Kai
Właśnie chciałem to opublikować, haha. :) Cieszę się, że to znalazłeś! – kcoppock