Jestem ciekawy, dlaczego poniżej jest wyciek pamięci, ponieważ mHandler jest tworzony na mainThread i teraz, gdy nazywa się onDestroy, po prostu zabija wątek? w jaki sposób przewodnik może istnieć po zniszczeniu działania? Nie utworzyłem nowego wątku. Czy rozumiem, że program obsługi, jeśli ma jakieś rzeczy, kolejka wiadomości pozostanie nawet po zniszczeniu wątku?Android - czy programy mainThread mogą powodować wycieki pamięci?
Odniesienie doc im czytanie jest here
Twoje przysłowie, jeśli przewodnik ma wiadomości w kolejce, musi nadal działać, nawet jeśli zakończy się działanie, które zostało utworzone, prawda? – j2emanue
A w przypadku mojego przykładu handler jest powiązany z mainThread. i umieszczam runnables na głównym wątku looper. teraz, gdy działanie wywołuje funkcję Destroy, ponieważ wiadomości nadal znajdują się w kolejce looper mainThreads, GC nie będzie zbierać aktywności? czy jest to, że GC nie będzie zbierać działania z powodu odniesienia, które działa w trybie runnable? Zobacz, co mam na myśli? Powiedzmy, że działający nie ma odwołania do działania? czy nadal wyciekał? – j2emanue
@ j2emanue, jeśli twój runnable nie zawiera żadnych odwołań do działania, w takim przypadku wyciek aktywności nie nastąpi, ale wątek główny pozostanie przy życiu, ponieważ musi zakończyć zdarzenia w kolejce komunikatów zaksięgowanej przez runnable. –