0

我有开/关按钮。单击 on 时,算法开始工作(大约工作 10 秒)。

该算法正在另一个线程中工作(不在主线程中)。我想使用关闭按钮停止算法,但它不处理点击事件......

但是有一些奇怪的东西。

当我在单击时使用这种代码块时,它是可以的。

while(true){
                    //do something
}

我的算法是这样的

 myObj.startAlg();
4

1 回答 1

0

您可以执行以下操作:

当按下按钮时取消任务:

AsynTask.cancel(true);

在 AsyncClass 添加if(isCancelled())部分,如下所示: protected Long doInBackground(URL... urls) {

         for (int i = 0; i < count; i++) {
          // you need to break your loop on particular condition here

             if(isCancelled())
                  break;      
             /*Put this in the doInBackgound() for the purpose*/
         }
         return totalSize;
     }

编辑:

并从 AsyncTask 的文档中添加更多信息:

可以通过调用 cancel(boolean) 随时取消任务。调用此方法将导致对 isCancelled() 的后续调用返回 true。调用此方法后,将在 doInBackground(Object[]) 返回后调用 onCancelled(Object),而不是 onPostExecute(Object)。为了确保尽快取消任务,如果可能(例如在循环内),您应该始终从 doInBackground(Object[]) 定期检查 isCancelled() 的返回值。

于 2013-06-28T08:00:08.103 回答