Мне любопытно, почему ниже происходит утечка памяти, потому что mHandler создается на mainThread, и теперь, когда onDestroy называется wont, он просто убивает поток? как обработчик может существовать после уничтожения активности? я не создал новую нить. Разве я понимаю, что обработчик, если он имеет вещи, в очереди сообщений останется даже после уничтожения потока?Android - могут ли обработчики mainThread вызывать утечки памяти?
Ссылка чтения документ им является here
так что вы говорите, если у обработчика есть сообщения в очереди, он должен продолжать работать, даже если активность, которую она создала при завершении, правильно? – j2emanue
И в случае моего примера обработчик связан с mainThread. и я отправляю runnables на главный петлитель потоков. теперь, когда активность вызывает onDestroy, поскольку есть сообщения, все еще находящиеся в очереди mainThreads looper, GC не будет собирать активность? или что GC не будет собирать активность из-за ссылки, которую выполняет runnable? Посмотрите, что я имею в виду? Скажем, у runnable нет ссылки на активность? он будет просочиться? – j2emanue
@ j2emanue, если ваш runnable не содержит ссылки на активность, в этом случае утечка активности не произойдет, но основной поток будет активен, так как он должен завершить события в очереди сообщений, отправленные runnable. –