0

我有一个无限 for 循环,我想运行这个 for 循环 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 秒是否已完成,现在该终止了。

任何想法将不胜感激。

4

2 回答 2

2

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

如下所示:不确定效率。

   long startTime=   System.currentTimeMillis();
do {

......

     long currTime=  System.currentTimeMillis();
     long elapsedtime = currTime - startTime;
     if(elapsedtime > 20000)
      {
      break;
      }
}
于 2012-08-17T13:40:53.057 回答
0

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

一个警告购买者:使用的这组函数需要重复频率,但作为一次性定时的事情,您可以通过使用可以发出取消信号的处理程序来绕过它!

一个例子是这样的:

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;
        }
    }
}
于 2012-08-17T15:02:17.657 回答