在我的应用程序中,我使用HttpURLConnection中的AsyncTask下载文件。如果文件下载时间太长,那么我想取消它;我通过关闭流并在HttpURLConnection对象上调用disconnect()来做到这一点。该代码在Android中完美运行了好几年。但是,现在KitKat推出了,问题就弹出了。具体来说,disconnect()调用本身需要花费几秒钟或更长时间才能完成。在KitKat之前的设备中,它花费了毫秒或更短的时间。真正奇怪的是,当我在一个单独的线程上执行断开连接调用时,它确实又很快了。因此,在AsyncTaskdoInBackground方法中调用它必须是一个问题。需要注意的一件事是我的AsyncTask确实有一个Looper.prepare()调用。

有谁知道KitKat和其他Android版本之间的区别是什么?我浏览了更改列表,但未发现与此问题相关的任何内容。

最佳答案

似乎Kitkat使用okhttp而不是以前的HTTPConnection实现,或者至少在带有官方更新的Nexus设备上是这种情况。

10-08 15:27