尝试在特定时间间隔内运行线路

时间:2014-03-19 17:20:24

标签: java android

所以我想知道在java中是否有一种在特定时间间隔内运行一行的方法。我目前正在开发一个Android应用程序,我正在尝试运行相同的几秒钟。

提前谢谢。

2 个答案:

答案 0 :(得分:2)

检查它们,并选择最适合您的方法:

Timer ScheduledExecutorService

我认为Timer对于这种情况更好。


计时器 - 示例:

Timer timer = new Timer();
TimerTask task = new TimerTask()
{
    @Override
    public void run()
    {
        method();
    }
};
// every 3 seconds
timer.schedule(task, 0, 3000);

ScheduledExecutorService - 来自Android doc的示例:

  

这是一个带有设置ScheduledExecutorService的方法的类   每隔十秒钟发出一小时的哔声:

 import static java.util.concurrent.TimeUnit.*;
 class BeeperControl {
   private final ScheduledExecutorService scheduler =
     Executors.newScheduledThreadPool(1);

   public void beepForAnHour() {
     final Runnable beeper = new Runnable() {
       public void run() { System.out.println("beep"); 
     };
     final ScheduledFuture beeperHandle =
       scheduler.scheduleAtFixedRate(beeper, 10, 10, SECONDS);
     scheduler.schedule(new Runnable() {
       public void run() { beeperHandle.cancel(true); }
     }, 60 * 60, SECONDS);
   }
 }}

所有这些都会创建一个线程,因此您不会阻止UI线程。

答案 1 :(得分:0)

long timestart = System.currentTimeMillis();
int desiredTimeInSecs = 3; 

while (System.currentTimeMillis() < timeStart + desiredTimeInSecs*1000){
     yourCommand();
}

我会同时不阻止你的UIThread。