Java OnPreDraw()被反复调用。怎么解释呢?

Java OnPreDraw()被反复调用。怎么解释呢?,java,android,android-layout,Java,Android,Android Layout,至少它正在做我希望它做的事情(在运行时将我的视图居中),但为什么它要一遍又一遍地做呢?我的理解是,当视图树有东西要绘制时,应该调用它,而不是每秒多次。我正在记录它的呼叫 为什么OnPreDraw()在屏幕上什么都没发生的情况下仍不断被调用?这对表演很糟糕吗?我只想在有东西要画的时候叫它 视图位置管理器是操作栏的一部分,如果它很重要的话。如果只希望调用一次,则需要删除onPreDraw()方法第一行中的onpredrawstener: myView.getViewTreeObserver().r

至少它正在做我希望它做的事情(在运行时将我的视图居中),但为什么它要一遍又一遍地做呢?我的理解是,当视图树有东西要绘制时,应该调用它,而不是每秒多次。我正在记录它的呼叫

为什么OnPreDraw()在屏幕上什么都没发生的情况下仍不断被调用?这对表演很糟糕吗?我只想在有东西要画的时候叫它


视图位置管理器是操作栏的一部分,如果它很重要的话。

如果只希望调用一次,则需要删除
onPreDraw()方法第一行中的
onpredrawstener

myView.getViewTreeObserver().removeOnPreDrawListener(this);

vto
必须声明为
final
这会立即使我的应用程序崩溃。你是说myView.getViewTreeObserver().removeOnPreDrawListener(这个)@user3453281是的,这可能更好,因为旧的视图树观察者可能已经不存在了