解决AsyncTask中线程的中断异常

时间:2015-07-03 16:33:08

标签: java android multithreading android-asynctask

我有一个类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。但是,我不确定它是否有可能的错误? 非常感谢你的帮助!

0 个答案:

没有答案