今天做判断加载文件超时时用到了一个子线程,我的方法就是开始加载文件时,开启这个子线程,让它不停的循环,判断加载时间是否超过30秒,超过就发送一个超时的信息,现在问题就是, 加载的时候会弹出一个进度框,这时候子线程已经开始不停的循环判断了,我想点back键,停止线程,但线程一直循环,onKeyDown();一直无法抢到时间片,执行不了 线程停止语句; `
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if(keyCode ==KeyEvent.KEYCODE_BACK){
overTimeUtil.stop();
}
return super.onKeyDown(keyCode, event);
}
/**
* 停止 超时检测线程
*/
public void stop() {
isStopThread = true;
}
class TimeThread extends Thread {
@Override
public void run() {
while (!isStopThread) {
try {
Thread.sleep(100);
currentTime = System.currentTimeMillis();
String strMsg = String.format("times = %d",
currentTime - startTime);
Log.v("TAG", strMsg);
if (isLoadFinish) { //报障类型加载完成,跳出循环
break;
} else {
if ((currentTime - startTime) >= timeRange) {
Message msg = new Message();
msg.what = OverTimeUtil.OVERTIME;
handler.sendMessage(msg);
break;
}
}
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}