如何在向Android应用程序添加视图时暂时停止重新播放

如何在向Android应用程序添加视图时暂时停止重新播放,android,layout,view,Android,Layout,View,我有一个在运行时动态添加视图的应用程序。这是通过将addView()添加到视图所在的布局容器中来完成的。它很好用 然而,有时需要一次性删除所有现有视图并添加新地块 我假设对addView()的任何调用都会导致布局请求在树上传播。这样做的问题是,每次添加视图时都会导致重新显示,而将所有视图添加到视图中,然后执行一次重新显示,效率会更高 我可以通过重用视图、只删除多余的视图、只在必要时添加新视图等更有效地实现这一点,但在完成之前不重新显示视图会更简单、更整洁 有没有办法实现这一点?视图层次结构的每次

我有一个在运行时动态添加视图的应用程序。这是通过将
addView()
添加到视图所在的布局容器中来完成的。它很好用

然而,有时需要一次性删除所有现有视图并添加新地块

我假设对
addView()
的任何调用都会导致布局请求在树上传播。这样做的问题是,每次添加视图时都会导致重新显示,而将所有视图添加到视图中,然后执行一次重新显示,效率会更高

我可以通过重用视图、只删除多余的视图、只在必要时添加新视图等更有效地实现这一点,但在完成之前不重新显示视图会更简单、更整洁


有没有办法实现这一点?

视图层次结构的每次修改(
addView()
/
removeView()
)都会传播布局请求,但这只是设置的一个标志。根据屏幕刷新率,直到稍后的计划时间,才会发生完整布局过程

换句话说,你不必做任何特别的事情。在给定的例程中,您可以根据需要修改视图层次结构(如果需要,完全替换所有
视图
),这将只生成一个布局过程作为响应

一些
视图
可能会多次调用
onMeasure()
,但这是与单个布局过程相关联的正常行为