我最近開始使用Java,並且正在探索Android開發。我試圖移植一個我製作的Java程序,但是我在獲取java Timer以在Android中以相同方式運行時遇到了一些困難。我閱讀了大量的帖子,他們大部分都表示,最好在Android中使用Handler類而不是Timer。Android中的Java Timer相當於
這是我用Java定時器:
playTimer = new Timer(1000/model.getFPS(), new ActionListener() {
public void actionPerformed(ActionEvent evt) {
// do something
...
if(finished everything) playTimer.stop();
}
});
而且一旦某個按鈕被點擊,我只想跑「playTimer.start()」來啓動它。正如你所看到的,我已經設置了它,以便用戶可以設置他們想要的FPS(只需將Timer類的第一個參數設置爲1000/model.getFPS())即可。
現在我試着在Android中使用處理程序做類似的事情,但我遇到了一些困難。看起來Handler蜱沒有按適當的時間間隔發射。看起來它們比我所需要的要慢。這是我到目前爲止在android上所做的:
public void startTimer() {
playHandler = new Handler();
startTime = System.currentTimeMillis();
playHandler.removeCallbacks(updateTimeTask);
playHandler.postDelayed(updateTimeTask, 0);
}
private Runnable updateTimeTask = new Runnable() {
public void run() {
// do something
...
if(finished everything) playHander.cancel();
else {
playHandler.postDelayed(updateTimeTask, 1000/model.getFPS());
}
}
};
打擾半僞碼。任何人都可以擺脫光線嗎?多謝你們。
處理程序是粗略的估計。在大約1秒內做大約100ms。這並不意味着任何需要確切的東西。 – 2013-04-07 20:23:36
作爲'Handler'運行在'UIThread'上,它只會在線程上得到時間,無論何時它有一個時隙,它不控制它自己,所以它不是完全嚴格的'Handler'將完成。如果是這樣的話,用戶界面在某些時候可能會不響應。 – Darwind 2013-04-07 20:52:01