据CNBC报道,社交网络巨头Facebook已承认向61家科技公司提供了其用户数据的特殊访问权限,此前该公司曾在2015年公开表示此类访问。Facebook在上周五晚些时候提交给美国的747页文件中承认,该公司在2015年5月宣布上述做法后,继续与61家硬件和软件制造商分享用户信息。
本篇来自豌豆射手_BiuBiu的,分享了Android源码分析(View的绘制流程),一起来看看!希望大家喜欢。
View是何时开始绘制的?Activity走了onCreate方法吗?这篇文章就是从程序的入口ActivityThread入口程序,去解释View中的measure()方法、View中的layout、View中的draw怎么开始调用的,非常有意思!虽然好多的技术文档,在半个月前已经做好了,这篇文章,对我自己来讲的话,是个很好的复习~~
为了更好地阐述着这篇文章,我这里就直接抛出结论了,为啥会这样的,在下篇文章会讲到,这里就记住一点,在Activity onResume后,调用了View onAttachedToWindow 才会开始View measure
既然在知道了,activity 获取焦点,会在执行,那么View的绘制就会在下面的函数中进行。
去寻找WindowManagerGlobal的addView()方法。这里有个单利模式,在源码好多地方使用的单利模式都是这样,并没有进行双断,在老牌的图片加载框架ImageLoader也是这样获取单利对象,如果想了解更多设计模式的姿势,可以看这片文章二十三种设计模式.
后续我会做一篇文章详细解释下,为什么会这样,这里不过多的解释了,自提一句,非常有意思的代码!以前还会有两次的layout,说明谷歌也在优化 framework。todo
performTraversals这里就是整个View绘制的开始,所有的绘制,都会从这里开始,虽然这个方法代码有点多,但是关键的地方我都做了注释,下面一步一步的分析
注意这个对象outParams lp ,如果说lp.horizontalWeight>
0.0f或者是lp.verticalWeight>
0.0f,那么measureAgain =true;horizontalWeight这个标记大概是这个意思额外空间的多少将被水平分配。如果视图指定0不应被拉伸。否则额外像素将被优先评估。在所有重量大于0的视图中。一般都出还有多少的水平的空间将要被分配。巫毒僵尸
文章由325棋牌提供发布
网友评论 ()条 查看