Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/326.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 解决AsyncTask中线程的中断异常_Java_Android_Multithreading_Android Asynctask - Fatal编程技术网

Java 解决AsyncTask中线程的中断异常

Java 解决AsyncTask中线程的中断异常,java,android,multithreading,android-asynctask,Java,Android,Multithreading,Android Asynctask,我有一个AsyncTask类线程,它执行以下操作: @Override protected Void doInBackground(Long... params) { while(true) { doSth(); try { Thread.sleep(1000); } catch (InterruptedException e) {

我有一个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尝试了上面的代码,没有抛出中断的异常。但是,我不确定它是否有可能的bug? 非常感谢你的帮助