你好在Java和android这里只有几天。我有点困惑究竟是如何“实现Runnable”实际工作的例子:关于“implements Runnable”的困惑
public class DrawableSurfaceView extends SurfaceView implements Runnable {
[...]
public void resume(){
isRunning = true;
mThread = new Thread(this);
mThread.start(); //start the animation
parseParameters(); //<== Here is my problem
}
public void run() {
while (isRunning == true){
if (!mHolder.getSurface().isValid()) {
continue;
}
Canvas canvas = mHolder.lockCanvas();
canvas.drawARGB(255, 0, 0, 0);
canvas.drawPath(PenPath, PenPaint);
canvas.drawPath(CursorPath, CursorPaint);
mHolder.unlockCanvasAndPost(canvas);
}
}
public void parseParameters() {
[...]
[ The rest of my code here modifying PenPath and CursorPath, etc ]
}
我不好意思问,但我认为mThread.start后();一个新的线程将开始在run方法中运行一个循环。相反,我得到的是只有在我的parseParameters()方法终止后才执行的run方法。 我想要实现的是在绘图循环线程上绘制画布,并在外部修改绘制路径的参数以生成我的动画。 我相信这是非常基本的,但我几个小时都无法理解这一点。文档没有帮助。
任何指针都会有很大帮助。干杯!
感谢您的快速回复。我意识到线程不保证立即开始。所以我试图用循环和布尔值来锁定我的其他方法,直到run()方法得到执行并且布尔切换。但Run()方法永远不会执行,因此循环无限地继续。对于这个愚蠢的问题抱歉,仍然没有得到它。 – 2012-01-08 05:40:48
尝试使运行isRunning'volatile',并将其值更改为false?我没有在你的代码中看到它。 – MByD 2012-01-08 05:43:36
对不起,我没有复制整个代码。将尝试使其变得不稳定 – 2012-01-08 05:46:41