我有一个类AsyncTask的线程,它做了这样的事情:
@Override
protected Void doInBackground(Long... params) {
while(true) {
doSth();
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}}}
然后,在某个地方我必须停止线程,无论是睡眠还是正在运行,这都会导致中断异常。
我有两个问题:
- 这种异常是否严重,我是否需要使用它而不仅仅是priningStackTrace()?
- 使用doneFlag是一种正确的方法来避免这种异常吗?
private boolean doneFlag = false;
@Override
protected Void doInBackground(Long... params) {
while(true) {
doSth();
try {
doneFlag = false;
Thread.sleep(1000);
doneFlag = true;
} catch (InterruptedException e) {
e.printStackTrace();
}}}
当我想要停止这个AsyncTask线程时,我会这样做:
protected void cancelThread() {
while (!this.isCancelled()) {
if (doneFlag) {
cancel(true);
}
}
}
我用doneFlag尝试了上面的代码,并且没有抛出Interrupted Exception。但是,我不确定它是否有可能的错误? 非常感谢你的帮助!