gpt4 book ai didi

Android - mainThread 处理程序会导致内存泄漏吗?

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:23:59 25 4
gpt4 key购买 nike

我很好奇为什么下面是内存泄漏,因为 mHandler 是在 mainThread 上创建的,现在当调用 onDestroy 时它不会杀死线程吗? Activity 被销毁后,处理程序如何存在?我还没有发新帖。我是否理解一个处理程序,如果它有东西,即使线程被销毁,消息队列也会保留?

我正在阅读的引用文档是 here enter image description here

最佳答案

处理程序主要用于将事件发布到线程的消息队列。每个处理程序实例都与单个线程和该线程的消息队列相关联。

所以当你发布一个带有延迟的runnable,并退出activity时,MainThread不会被销毁,因为在延迟之后MessageQueue中还有事件需要处理,所以这会导致memoryLeak 因为你的 runnable 匿名内部类持有 activity instance 的引用。

因此请确保通过调用

删除 Activity 的 onStop() 中的所有消息
handler.removeCallbacksAndMessages(null);

这将在离开您的 Activity 之前清除所有待处理的消息和回调。

关于Android - mainThread 处理程序会导致内存泄漏吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41477830/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com