在android中20秒后终止无限循环

时间:2012-08-17 13:38:17

标签: java android time timer

我有一个无限循环,我想在循环运行20秒后我想终止循环所以我能为此做些什么?

这是我在android中的代码:

do {
    rl += Character.toString((char) in.read());
    // Log.i("RL", "" + rl);
    if (rl.contains("<") && checkStream(rl)) {
        // Log.i("RL INSIDE", "" + rl);
        getNumerAndStatusFromRLString(rl);
        rl = "";
    }
    if (20 SECONDS COMPLETED) {
        Log.i("<rl>", "exit");
        break;
    }
} while (true);

那么我该怎样做才能检查20秒是否已经完成,现在是时候终止了。

任何想法都将受到赞赏。

2 个答案:

答案 0 :(得分:2)

我认为其中一个选项可能是在循环之前得到时间,而循环检查已经过了20秒。

如下所示:不确定效率。

   long startTime=   System.currentTimeMillis();
do {

......

     long currTime=  System.currentTimeMillis();
     long elapsedtime = currTime - startTime;
     if(elapsedtime > 20000)
      {
      break;
      }
}

答案 1 :(得分:0)

使用Timer Task,您可以指定任务运行的时间长度。

一个需要注意的事情:这套使用的函数需要一个重复的频率,但作为一次性定时的事情,你可以通过使用一个处理器来绕过它,你可以发信号取消! / p>

一个例子是这样的:

private Timer myTimer = new Timer();
private final int CANCEL_EXECUTION = 0x100;
private Handler myHandler = new Handler();

public void runFor20Sec(){
   myTimer.schedule(new TimerTask(){
       @Override
       public void run(){
          // Do something here
          myHandler.obtainMessage(CANCEL_EXECUTION).sendToTarget();
       }
    }, System.currentTimeMillis(), 2000);
}
public class myHandler extends Handler{
    @Override
    public void handleMessage(Message msg){
        switch(msg.what){
           case CANCEL_EXECUTION :
               myTimer.cancel();
               break;
        }
    }
}