0
設置:的Android postinvalidate不調用的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中可見」?
我猜'DrawThread'沒有在主線程上運行,是這樣嗎? – ssantos
如何確定主線程在哪裏/哪裏?我試圖讓DrawThread()調用Invoke,但是失敗了,所以它不在主線程中。鑑於它是它自己的線程,是不是意味着它不能在主線程上? – reza
請將相關代碼發佈到您要調用DrawThread的地方 – ssantos