0

我有一个下载服务来使用 asynctask 下载文件。一个按钮用于暂停和恢复。当我点击暂停时,它应该破坏服务以取消当前任务。我试图通过使用来实现它

Intent download=new Intent(Download.this, DownloadService.class); getApplicationContext().stopService(download);

并且还放

stopself();

在 onDestroy(){} 函数内部。我的问题是DownloadService被销毁时, DownloadTask没有被取消。请帮助找到问题的根源。谢谢你。

4

2 回答 2

1

您必须在停止服务之前取消 AsyncTask。因为 AsyncTask 将一直工作,直到 App 进程被关闭。

因此,您必须关闭 HttpRequest 才能在 AsyncTask 中中断此阻塞调用。将 HttpClient 的实例作为 AsyncTask 中的属性。在您的服务中定义一个看起来像这样的中断函数。

public void stopTaskAndService(){
    yourAsyncTask.yourHttpClient.getConnectionManager().shutdown();
    yourAsyncTask.cancel(true) // prevent the onPostExecute() call
    stopself();
}
于 2013-07-31T20:00:56.543 回答
0

我必须查看更多代码才能确定发生了什么。

我想知道使用 IntentService 而不是 Service 是否会更好地为您服务。你考虑过这个吗?

于 2013-07-31T19:31:07.957 回答