试图从Main Activity中停止另一个Service的AsyncTask中的AsyncTask

时间:2012-11-07 17:12:23

标签: android service android-asynctask

我有一个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");
            }

服务的AsyncTask(fullscan)doInBackground

if (int i = 0; i < myList.size(); i++ )
        if (isCancelled()) {
            return null;
        }
}
return null;

但即使在致电fullscan.cancel(true)之后,它似乎也没有被召唤。

1 个答案:

答案 0 :(得分:0)

您的活动如何连接到该服务?您的活动应仅与绑定到它的基础服务(reF:Bound Services)进行通信,而不是Service的{​​{1}}。

在您的实例中,您的本地IBinder实现应该公开AsyncTask方法或类似的东西。当活动需要停止在服务下完成的工作时,活动代码应该获得对服务的引用(这将在活动连接到服务时发生,ref:cancelTask())然后调用服务onServiceConnected

然后,服务将停止它自己的AsyncTask,它引用了它。