view.post执行时机以及可能产生的内存泄露问题

来源:互联网 发布:软件开发界面 编辑:程序博客网 时间:2024/06/04 00:27

两篇主要博文:

通过View.post()获取View的宽高引发的两个问题:1post的Runnable何时被执行,2为何View需要layout两次;以及发现Android的一个小bug

这一篇详细讲解了view.post方法的调用流程,以及在该方法中获取view的宽高的实例分析


View#post与Handler#post的区别,以及导致的内存泄漏分析

这一篇讲解了view.post的执行时机,不同的时机得到的效果不一样,总体来说就是当view已经attach到window的时候,view的post和handler的post是一致的,都是通过handler来进行消息分发,而但view未attach到window的时候,就是走的另外的消息机制.这种情况下就有可能产生内存泄露.

具体的区别就是在post方法中做的判断:

public boolean post(Runnable action) {        final AttachInfo attachInfo = mAttachInfo;        if (attachInfo != null) {            return attachInfo.mHandler.post(action);        }        // Assume that post will succeed later        ViewRootImpl.getRunQueue().post(action);        return true;    }


阅读全文
0 0
原创粉丝点击