我有一个无限循环,我想在循环运行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秒是否已经完成,现在是时候终止了。
任何想法都将受到赞赏。
答案 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;
}
}
}