在哪种情况下,在Android中反复调用View的onDraw方法?

时间:2012-05-13 08:35:05

标签: android

我自己实现了一个视图,重复调用视图的onDraw方法。这将导致严重的性能问题。代码非常复杂,我无法在此处粘贴。有谁可以告诉我一些可能的原因?我没有用手指触摸视图。

2 个答案:

答案 0 :(得分:1)

一个原因是您的onDraw方法正在调用一些方法(可能间接地)使视图无效。另一种可能性是你的程序中完全不相关的东西导致重绘。尝试这个实验:注释掉你的绘图代码并替换一些非常简单的东西,比如简单的线条绘制,只是为了表明它是有效的。如果重复绘图消失,那么它就是onDraw代码中的内容。只需开始一次恢复当前代码,直到问题再次出现,然后您可以追踪它。

如果在您尝试实验时问题没有消失,那么请在代码中的其他位置查找使您的视图无效的内容(可能是工作线程?)。

答案 1 :(得分:0)

我今天遇到了同样的问题。我通过覆盖我的View子类中的invalidate()来解决它:

@Override
void invalidate() {
    super.invalidate();
}

然后我在invalidate()内设置断点并等待它击中。当它发生时,我有一个电话的堆栈跟踪和违规的呼叫者。神秘在2分钟内解决了。

如果这不起作用,请尝试覆盖View中的其他无效方法。