asynctask的android服务没有完全停止

时间:2013-07-31 19:11:13

标签: android service android-asynctask

我有一个下载服务,用asynctask下载文件。一个按钮用于暂停和恢复。当我点击暂停时,它应该销毁服务以取消当前任务。我尝试使用

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

并且还放

stopself();

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

2 个答案:

答案 0 :(得分:1)

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

因此你必须关闭你的HttpRequest以在你的AsyncTask中打破这个阻塞调用。在AsyncTask中保存HttpClient的实例作为属性。在服务中定义一个类似于此的中断函数。

public void stopTaskAndService(){
    yourAsyncTask.yourHttpClient.getConnectionManager().shutdown();
    yourAsyncTask.cancel(true) // prevent the onPostExecute() call
    stopself();
}

答案 1 :(得分:0)

我必须看到更多代码才能知道发生了什么。

我想知道你是否可以通过使用IntentService而不是服务来获得更好的服务。你有没有考虑过这个?