android measure,android-触发View的measure()的原因

在我的应用程序中,我的View的onMeasure()重写之一具有无限循环。 从onMeasure的断点开始调试源代码,我可以一直跟踪到堆栈,一直跟踪到PhoneWindow $ DecorView的measure()(在View层次结构中最高级的类),ViewRoot会调用它 .performTraversals()。 现在从这里开始,如果我继续前进,最终将得到Looper.loop()类中的消息再次调用PhoneWindow $ DecorView的measure()。 我猜测某些内容已排队,需要重新衡量,例如无效。

我的问题是,什么触发条件需要在视图上进行度量调用?

根据我对布局/测量/绘制过程的理解,只有在特定视图上调用invalidate()方法时,才会发生这种情况,并且会滴落并为无效的该视图执行布局/测量/绘制过程,并且所有 它的孩子们。 我认为在某种程度上我的视图层次结构中最重要的视图将变得无效。

但是,我已经在我拥有的每个无效调用上都明确指定了一个断点,并且没有以某种无限的方式调用无效。 因此,我认为并非如此。 还有另一种触发测量通过的方法吗? 内部会引起这种情况吗? 在看到没有什么是无限无效之后,我有点想法了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值