0

我自己实现了一个视图,视图的onDraw方法被反复调用。这将导致严重的性能问题。代码太复杂了,这里就不贴了。谁能告诉我一些可能的原因?我没有用手指触摸视图。

4

2 回答 2

1

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

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

于 2012-05-13T08:40:25.163 回答
0

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

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

然后我在里面设置了一个断点invalidate(),等待它命中。当它发生时,我有一个调用的堆栈跟踪,以及有问题的调用者。2分钟内解开谜团。

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

于 2012-05-15T19:51:47.383 回答