我想在从系统接收广播时列出一个硬盘文件(在我的情况下,它是android)。
问题是,当我收到广播时,这个硬盘可能没有做好充分的准备,所以当我读到这个硬盘的根文件时,它就不存在了。如果这个文件不存在,我需要延迟我的任务。
if (timerTask != null) return;
Timer timer = new Timer();
timerTask = new TimerTask() {
@Override
public void run() {
File udisk = file;
if (!udisk.exists) {
// This file do not exist now, delay again
// But how to delay again?
return;
}
// This file has already well prepared, so let's read it
// timerTask = null;
}
};
timer.schedule(timerTask, 2000);
但我有两个问题:
如果根文件准备不充分,我怎么能再次延迟?
如果我收到硬盘被删除的广播,我需要取消该任务。但是我们可能有多个硬盘,所以我可能需要有多个任务,所以当我取消任务时,我应该取消哪一个?