在我的应用程序中,我使用HttpURLConnection中的AsyncTask下载文件。如果文件下载时间太长,那么我想取消它;我通过关闭流并在HttpURLConnection
对象上调用disconnect()来做到这一点。该代码在Android中完美运行了好几年。但是,现在KitKat推出了,问题就弹出了。具体来说,disconnect()
调用本身需要花费几秒钟或更长时间才能完成。在KitKat之前的设备中,它花费了毫秒或更短的时间。真正奇怪的是,当我在一个单独的线程上执行断开连接调用时,它确实又很快了。因此,在AsyncTask
的doInBackground
方法中调用它必须是一个问题。需要注意的一件事是我的AsyncTask
确实有一个Looper.prepare()
调用。
有谁知道KitKat和其他Android版本之间的区别是什么?我浏览了更改列表,但未发现与此问题相关的任何内容。
最佳答案
似乎Kitkat使用okhttp而不是以前的HTTPConnection实现,或者至少在带有官方更新的Nexus设备上是这种情况。