我有一个下载服务,用asynctask下载文件。一个按钮用于暂停和恢复。当我点击暂停时,它应该销毁服务以取消当前任务。我尝试使用
实现它Intent download=new Intent(Download.this, DownloadService.class); getApplicationContext().stopService(download);
并且还放
stopself();
在onDestroy(){}函数内部。当 DownloadService 被销毁时,我的问题是 DownloadTask 没有被取消。请帮助找到问题的根源。谢谢。
答案 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而不是服务来获得更好的服务。你有没有考虑过这个?