Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/google-app-engine/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android-何时调用performTraversals?_Android_Views - Fatal编程技术网

Android-何时调用performTraversals?

Android-何时调用performTraversals?,android,views,Android,Views,我很好奇 调用doTraversal->performTraversals的确切情况是什么?由于我的活动量很大,我希望应用程序调用onDraw或sort。performTraversals相当重,它正在尝试/测量是否应该调整视图大小,我猜是这样的。当我在做一些视图时,我不需要它,没有其他视图依赖它,但我想我不能跳过它。因此,在深入研究Android的源代码之前,我想问一下。如果您知道,请随时分享:) 谢谢, DanailperformTraversals()有许多工作,但它的三个主要角色是:

我很好奇

调用
doTraversal->performTraversals
的确切情况是什么?由于我的活动量很大,我希望应用程序调用
onDraw
或sort。performTraversals相当重,它正在尝试/测量是否应该调整视图大小,我猜是这样的。当我在做一些视图时,我不需要它,没有其他视图依赖它,但我想我不能跳过它。因此,在深入研究Android的源代码之前,我想问一下。如果您知道,请随时分享:)

谢谢, Danail

performTraversals()
有许多工作,但它的三个主要角色是:

  • 测量视图
  • 布局视图
  • 画图

每次Android需要重新绘制窗口时,都会调用
performTraversals()
。但这并不意味着每次执行performTraversals()时都会进行度量/布局。如果使用标准视图,则不能跳过
performTraversals()

谢谢您的回答。这是否意味着如果我取消了一些视图可见性,那么将调用ViewRootImpl中所有视图的performTraversals?我的意思是以这种方式触摸任何视图(使其消失,而不是可见性)为什么您需要它消失,而不仅仅是看不见?当然,使视图“消失”会触发重新显示。就像其他与布局相关的动作一样。因为动画。如果我在动画结束时使其消失,则另一个视图(它是动画布局的一部分)将转到正确的位置。如果我让它看不见,就会有一扇奇怪的空窗户,它本不应该在那里。使用GONE后,我不需要更改布局设置。此视图在消失时只影响另一个视图。但它引发了许多其他不必要的行动和估计。这就是为什么我试图更好地掌握Android的工作方式,以便优化我的代码。