Android循环方法每X秒

时间:2016-05-26 16:36:27

标签: android

我想调用相同的方法,比如说每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); 
}

3 个答案:

答案 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