我有开/关按钮。当单击打开时,算法开始工作(大约工作10秒)。
算法在另一个线程中工作(而不是在主线程中)。我想停止使用关闭按钮的算法,但它不处理单击事件…
但有一件事很奇怪。
当我使用这种代码块时,当我点击“开”时,它是正常的。
while(true){
//do something
}我的算法是这样的
myObj.startAlg();发布于 2013-06-28 16:00:08
您可以执行以下操作:
取消任务,当按钮被按下时:
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(布尔值)随时取消任务。调用此方法将导致后续对isCancelled()的调用返回true。调用此方法后,将在doInBackground(Object[])返回后调用onCancelled(Object),而不是onPostExecute(Object)。为了确保尽快取消任务,您应该始终定期检查doInBackground(Object[])中isCancelled()的返回值,如果可能的话(例如在循环中)
https://stackoverflow.com/questions/17359758
复制相似问题