我自己实现了一个视图,重复调用视图的onDraw方法。这将导致严重的性能问题。代码非常复杂,我无法在此处粘贴。有谁可以告诉我一些可能的原因?我没有用手指触摸视图。
答案 0 :(得分:1)
一个原因是您的onDraw
方法正在调用一些方法(可能间接地)使视图无效。另一种可能性是你的程序中完全不相关的东西导致重绘。尝试这个实验:注释掉你的绘图代码并替换一些非常简单的东西,比如简单的线条绘制,只是为了表明它是有效的。如果重复绘图消失,那么它就是onDraw
代码中的内容。只需开始一次恢复当前代码,直到问题再次出现,然后您可以追踪它。
如果在您尝试实验时问题没有消失,那么请在代码中的其他位置查找使您的视图无效的内容(可能是工作线程?)。
答案 1 :(得分:0)
我今天遇到了同样的问题。我通过覆盖我的View子类中的invalidate()
来解决它:
@Override
void invalidate() {
super.invalidate();
}
然后我在invalidate()
内设置断点并等待它击中。当它发生时,我有一个电话的堆栈跟踪和违规的呼叫者。神秘在2分钟内解决了。
如果这不起作用,请尝试覆盖View中的其他无效方法。