【发布时间】:2012-11-07 17:12:23
【问题描述】:
我有一个 Activity,它实现了一个按钮单击以尝试停止我的 AsyncTask,它是服务的内部类并在我的服务内部执行。
主要活动
if (s.equals("Stop scanning")) {
fullscan.cancel(true);
stopService(new Intent(AnalyzeActivity.this, ScanService.class));
txtView.setText("Scanning is stopping...");
txtView.setText("Scanning stopped");
but.setText("Start scanning");
}
Service 的 AsyncTask (fullscan) doInBackground
if (int i = 0; i < myList.size(); i++ )
if (isCancelled()) {
return null;
}
}
return null;
但即使在调用fullscan.cancel(true) 之后,它似乎也没有被调用。
【问题讨论】:
-
我知道这不是您问题的答案(这就是我评论而不是回答的原因),但是您为什么在服务中使用 AsyncTask 呢? AsyncTask 旨在将结果部署回 UI,服务没有 UI。
-
因为我需要在后台运行一个长时间运行的进程,我的 AsyncTask 通过我的 Activity 内的接收器广播 UI 结果,它有一个内部广播接收器,当 Activity 处于活动状态时注册我的接收器。跨度>
-
我只是说,虽然它可以工作,但异步任务并不是为此而设计的,也没有理由在服务中使用。检查线程和执行程序。另一方面,您在代码中添加的代码量不足以让别人帮助您。请多显示一些
-
不太明白我可以显示哪些其他代码来更好地解释我的问题。
-
那你怎么知道扫描没有取消呢?你是否在循环中检查
isCancelled()?
标签: android service android-asynctask