你可以嘗試這樣的事情:
1)創建一個實現該告知任務完成的API自定義的TimerTask(可以稱之爲isDone()
)。
2)保存這些任務的列表。
3)當你想檢查isEmpty()
只是迭代所有的任務,並檢查是否所有的返回true爲isDone()
。
所以,你的代碼將是這樣的:
public static class Solution {
private Timer timer = new Timer();
public abstract static class MyTimerTask extends TimerTask {
private boolean done;
public boolean isDone() { return done;}
public void setDone() { done = true;}
@Override
public void run() {
setDone();
}
public abstract void performTask();
}
private ArrayList<MyTimerTask> list = new ArrayList<>();
public boolean isEmpty() {
for (MyTimerTask task: list) {
if (!task.isDone())
return false;
}
return true;
}
public void runTask(MyTimerTask task) {
list.add(task);
timer.schedule(task, 0, 500);
}
public void doSomething() {
MyTimerTask task = new MyTimerTask() {
@Override
public void performTask() {
Gdx.app.log("Timer", "I'm working");
}
};
}
}
在這個例子中,你可以調用runTask()
與你的任務,並isEmpty()
檢查是否完成。我沒有添加清理代碼,但也應該創建。
感謝您的評論!但是我不明白,你能否更詳細地解釋你的步驟並向我展示班級中的完整代碼?謝謝:) – Eron
我更新了代碼,希望這有助於。 –
好的,謝謝,我認爲這樣會起作用,但是如果我可以啓動TimerTask並在所有任務完成後在另一個類中檢查? – Eron