美文网首页
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