Android postinvalidate不会调用onDraw()

时间:2013-10-08 07:58:05

标签: c# android ondraw

设定:

Activity的布局有一个SurfaceView对象(obj),定义了SurfacHolder回调。 obj定义了以下线程(这是通过Xamarin用C#编写的):

    void DrawThread() {
        Canvas c;
        while (drawingThreadActive) {
            c=null;
            try {
                c = this.Holder.LockCanvas(null);
                lock(Holder) {
                    //force redraw
                    PostInvalidate();
                } 
            } finally {
                if (c!=null) {
                    this.Holder.UnlockCanvasAndPost(c);
                }
            }
            //sleep for 50 ms or so (20Hz refresh)
        }
    }

调用SurfaceCreated()回调就好了,它启动了这个线程。但是,对PostInvalidate()的调用永远不会导致调用onDraw()函数。

我很确定一切都设置正确 - 知道我缺少什么吗?

鉴于调用SurfaceCreated()方法,我假设它'在UI中可见'

知道我缺少什么吗?

1 个答案:

答案 0 :(得分:1)

在这里找到答案 - 这篇文章可以标记为重复。 :Android: SurfaceView ignoring postInvalidate()?

出于某种原因,SurfaceView默认为“它不会绘制”。在SetWillNotDraw(false)修复{。}}。