我有一个SurfaceView
对象,其draw
方法被for
循环内的1个线程调用约600次。在此期间没有其他线程调用draw
。
绘制方法:
public void draw() {
if(this.surface_created){
long now = System.nanoTime();
Canvas canvas = holder.lockCanvas();
Log.d("GAME_SURFACE", "Time to lock:" + (System.nanoTime()-now));
if (canvas == null)
{
System.out.println("[GameSurface] Cannot draw onto canvas as it's null");
}
else
{
canvas.drawBitmap(this.bitmap, null, this.dest, null);
}
holder.unlockCanvasAndPost(canvas);
}
else{
System.out.println("[GameSurface] SURFACE NOT CREATED YET.");
}
}
当我使用holder.lockCanvas
时会出现问题,这需要大约1400万纳秒。因此,要绘制所有位图,最终需要13秒才能完成。为什么需要这么长时间?有解决方法吗?