我想调用相同的方法,比如说每5秒钟,我正在尝试创建某种数据库侦听器来监听数据库更改。以下代码不起作用,我希望日志打印" RUNNING"每5秒进行一次测试,但只有在我第一次调用该方法时才调用一次。
private void DBListern() {
// TODO Auto-generated method stub
//accessWebService();
System.out.println("RUNNING");
final Handler handler = new Handler();
handler.postDelayed(new Runnable() {
public void run() {
DBListern();
}
}, 5000);
}
答案 0 :(得分:0)
使用scheduleAtFixedRate查看java.util.concurrent.ScheduledExecutorService,您应该能够完全按照自己的意愿行事!
答案 1 :(得分:0)
尝试使用java.util.concurrent.ScheduledExecutorService。 例如:
private final ScheduledExecutorService exec = Executors.newScheduledThreadPool(1);
private void DBListern(int delayInSeconds) {
//accessWebService();
System.out.println("RUNNING");
exec.schedule(new Runnable() {
@Override
public void run() {
DBListern();
}
}, delayInSeconds, TimeUnit.SECONDS);
}
答案 2 :(得分:0)
好的,由于某种原因,该函数无法自行调用,因此我创建了一个名为loop()
的不同函数,每隔5秒调用DBListern
:
private void DBListern() {
// TODO Auto-generated method stub
//accessWebService();
System.out.println("RUNNING");
}
private void loop() {
// TODO Auto-generated method stub
final Handler handler = new Handler();
handler.postDelayed(new Runnable() {
public void run() {
DBListern();
handler.postDelayed(this, 5000);
}
}, 5000);
}
首先调用loop()
,然后每隔5秒调用DBListern
。