Я столкнулся со странной проблемой, пытаясь использовать SurfaceView. Как этот , он работает, но продолжает мерцать между 2 кадрами *. Кроме того, unlockCanvasAndPost занимает около 30-50Ms, это нормально?
Перерисовка всего, что происходит каждый раз, НЕ является хорошей идеей в этом случае, я не думаю, что перерисовка 350 точек в каждом кадре является хорошей идеей.
* Мерцание между двумя кадрами: допустим, я рисую точку в каждом кадре в точке (X, X), где X обозначает номер кадра.
Я буду видеть точки 1,1 3,3 5,5 7,7 9,9, показывающие каждый ослабленный кадр, и точки 2,2 4,4 6,6 8,8, показывающие каждый кадр пары.
Вот код, который рисует:
Canvas C;
while(running)
{
synchronized (mSurfaceHolder)
{
DoCalc(); //Doesn't do anything special. changes vars X1 and Y1
C=mSurfaceHolder.lockCanvas();
aDraw(C); // Only contains canvas.drawRect(X1-1, Y1-1, X1+1,Y1+1, P);
mSurfaceHolder.unlockCanvasAndPost(C); //Why does it take so long?
}
try {Thread.sleep(500);} //Temporary delay.
catch (InterruptedException e) {}
}