你好在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