Android异步Http客户端&配置更改

时间:2014-08-21 20:24:55

标签: android asynchronous configuration

我试图找出处理这种情况的最佳方法。

我们说我向我的API发送GET请求。 在它完成之前我旋转设备。 现在我不再收到回复,因为我的活动已被破坏并重新创建。

在这种情况下我该怎么做?

这是我正在使用的图书馆 https://github.com/loopj/android-async-http

2 个答案:

答案 0 :(得分:1)

我将简要回答,以便您可以进一步使用这些想法。 使用排球的第一件事是创建Singleton Request Queue,在Google网站上它会告诉你如何做到这一点。

凌空如何处理您的请求?

volley将您的请求放入队列。默认情况下,它使用5个线程。 4个线程的责任是将您的请求发送到服务器,另一个负责从请求队列中读取您的请求。 volley还使用磁盘缓存。单个线程将请求从请求队列中出列,并通过内部缓存进行检查。如果它的响应是在缓存中,则不会发出任何互联网请求,只是从内存返回结果。当新的响应出现时,volley检查头文件,如果它可以缓存你的响应(服务器允许响应被缓存),它会缓存响应并将其保存到磁盘中。所有这些故事都发生在工作线程中。所以当你的活动破坏时会发生什么?如果您的旧请求的响应到达,则凌空缓存它们并且如果您要求它从内存中获取url volley读取并且不向服务器发送任何请求。如果它已经发送了你的请求,那么当你提出新的请求时,它会检查它并发现你的回复是在飞行中,所以凌空不再请求。但是如果你想要在你的活动破坏时请求一些新东西只是取消onDestroy()中的旧请求以快速获得新结果,因为在这种情况下,凌空取消所有旧请求并且不会给你带来任何旧的结果。这就是凌空的行为!!

答案 1 :(得分:0)

我最终使用了无头碎片。如果这不是一个好主意,请告诉我;)