Android onDraw()是一个可疑的方法调用

时间:2013-10-01 19:28:23

标签: android performance android-canvas android-view

对于Android画布游戏,我使用以下(最小化)方法请求重绘SurfaceView:

    private void refreshView() {
        c = surfaceView.getHolder().lockCanvas();
        synchronized (surfaceView.getHolder()) {
            surfaceView.onDraw(c);
        }

但是自从最后一个android sdk(22.2.1)以来,它在 surfaceView.onDraw 上给了我一个Lint警告

  

可疑方法通话;应该打电话给'#34;画"而不是   "的onDraw"

当我使用绘图而不是onDraw时,屏幕保持黑色。当我使用postInvalidate()时,渲染性能会降低。

我做错了吗?有没有更好的方法来实现这个?

4 个答案:

答案 0 :(得分:3)

按照惯例,名为On***的Android API方法不应该由您的代码直接调用,而只能由Android操作系统本身调用。我希望,在这种情况下,有人会告诉你使用什么而不是它... 对于性能:如果性能成为问题,为什么不使用OpenGL? (或使用OpenGL的库)

答案 1 :(得分:2)

我知道这不是最佳解决方案,但我使用@SuppressLint("WrongCall")来避免错误消息。

答案 2 :(得分:2)

而不是onDraw(c)使用 draw(c)并将方法onDraw(Canvas画布)更改为绘制(Canvas画布) .hope这有助于

答案 3 :(得分:0)

我遇到了同样的错误。将onDraw函数更改为其他名称后,即。 Fix_onDraw,一切都还可以。