Cur*_*ain 6 android android-canvas
我一直在Android中绘制图形.那里有很多示例应用程序,但我总能看到的一件事是lockCanvas.有人可以解释得更近,因为我真的没有得到它,也因为我认为理解未来的编程很重要吗?
一个例子:
try {
c = panel_thread.getHolder().lockCanvas(null);
synchronized (panel_thread.getHolder()) {
panel_thread.update();
panel_thread.onDraw(c);
}
}
Run Code Online (Sandbox Code Playgroud)
这就是我现在所拥有的.我该怎么解释这个?同步做什么?为什么将canvas-object分配到getHolder和lockCanvas很重要?
这部分也令人困惑:
panel_thread.getHolder().unlockCanvasAndPost(c);
Run Code Online (Sandbox Code Playgroud)
为什么这有必要?我真的需要一个更细致的解释.:)
Ala*_*lan 12
synchronized
表示一次只有一个线程可以执行该代码块.
在这个例子中,没有synchronized
块,多个线程可以同时绘制图形,结果可能很混乱.因此,synchronized
确保一次只能绘制一个线程.
lockCanvas()
创建一个您要写入的表面区域.它被调用的原因lockCanvas()
是因为在你调用之前unlockCanvasAndPost()
没有其他代码可以调用lockCanvas()
并写入表面,直到你的代码完成.
通常,锁是很重要的,特别是当涉及多线程编程时.锁是一种同步原语,用于防止多个线程同时访问资源/代码.得到它的名字,因为它的行为很像物理锁.通常一个线程可以获得一个锁,直到它释放锁,没有其他线程可以获得锁.使用锁定的一个潜在问题是滥用它会导致"死锁"情况,其中线程等待锁定,并且它永远不会被释放.
归档时间: |
|
查看次数: |
12466 次 |
最近记录: |