美文网首页
handler为什么引起内存泄漏

handler为什么引起内存泄漏

作者: couriravant | 来源:发表于2019-12-30 19:02 被阅读0次

handler.sendMessage(Message ) -> sendMessageAtTime(Message msg, long uptimeMillis)
-> enqueueMessage(queue, msg, uptimeMillis)

 private boolean enqueueMessage(MessageQueue queue, Message msg, long uptimeMillis) 
    // 把handler赋值给了message,所以message持有handler的引用
        msg.target = this;
        if (mAsynchronous) {
            msg.setAsynchronous(true);
        }
        return queue.enqueueMessage(msg, uptimeMillis);
    }

message持有handler的引用, handler是非静态内部类的时候会持有activity的引用,当activity关闭后,如果还有message未处理,会导致activity的引用无法回收

相关文章

网友评论

      本文标题:handler为什么引起内存泄漏

      本文链接:https://www.haomeiwen.com/subject/xrnmoctx.html