其实我想问一下,我可以将数据库的值提供给定时器延迟吗?
Timer timer = new Timer();
TimerTask timerTask = new TimerTask() {
@Override
public void run() {
runOnUiThread(new Runnable() {
@Override
public void run() {
// whatever
}
}
});
}
};
timer.schedule(timerTask,2000,**myDelay**); //here at my delay
在myDelay,我可以通过数据库提供不同的值吗?或者它必须修复?
答案 0 :(得分:1)
如果您要使用不同的值始终更改时间,建议您使用
schedule(TimerTask task, long time)
每当您从数据库获得新的时间时,只需像这样创建一个新的Timer()
time = getNewTimeFromDB();
createNewTask(time);
....
private void createNewTask(long time) {
Timer timer=new Timer();
TimerTask timerTask=new TimerTask() {
@Override
public void run() {
runOnUiThread(new Runnable() {
@Override
public void run() {
// whatever
}
});
}
};
timer.schedule(timerTask,time);
}
关于这一点的好处是你不必每次都取消计时器,因为它只能运行一次。
答案 1 :(得分:0)
您是否应该改变解决问题的方法,创建一个函数来从数据库中返回时间FunctionToGetDelayFromDB();
Timer timer=new Timer();
long time = FunctionToGetTimeFromDB();
TimerTask timerTask=new TimerTask() {
@Override
public void run() {
runOnUiThread(new Runnable() {
@Override
public void run() {
// whatever
timer.schedule(timerTask, System.currentTimeMillis() + FunctionToGetDelayFromDB());
}
}
});
}
};
timer.schedule(timerTask, System.currentTimeMillis() + FunctionToGetDelayFromDB());
这应该适用于你想要实现的目标......