首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

动态添加的视图在invalidate()之后不调用onDraw

在Android开发中,动态添加的视图在调用invalidate()方法后不会立即调用onDraw()方法。invalidate()方法用于告知系统视图已经无效,需要重新绘制。但系统并不会立即重新绘制视图,而是将重新绘制的请求放入绘制队列中,在下一个绘制周期中进行处理。

具体来说,当我们调用invalidate()方法后,系统会将该视图添加到绘制队列中,并等待下一个绘制周期开始时进行处理。绘制周期通常在UI线程中进行,按照一定的规则进行调度。而onDraw()方法则是在绘制周期中被调用的,用于实际绘制视图内容。

因此,在调用invalidate()方法后,并不能立即保证视图会立即重新绘制。如果需要确保视图在调用invalidate()后立即重新绘制,可以使用postInvalidate()方法。postInvalidate()方法与invalidate()方法类似,但可以在非UI线程中调用,用于立即将视图的重新绘制请求发送到UI线程中。

对于解决动态添加视图在invalidate()之后不调用onDraw()的问题,可以考虑以下方法:

  1. 使用postInvalidate()方法代替invalidate()方法,确保在任何线程中都能立即调用重新绘制请求。
  2. 确保在调用invalidate()方法后,不会对视图进行过多的UI操作,以免阻塞UI线程,导致绘制周期延迟。
  3. 可以通过监听视图的某些状态变化,在状态变化时调用invalidate()方法,以触发重新绘制。

总结起来,动态添加的视图在invalidate()之后不会立即调用onDraw()方法,需要等待下一个绘制周期开始时才会进行处理。如果需要立即重新绘制视图,可以使用postInvalidate()方法。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

没有搜到相关的合辑

领券