我使用Volley获取所有与网络相关的代码。由于Volley在主UI线程中完成了实际的网络部分,我并没有真正考虑过它,但我现在意识到,在一些实例中,我在onResponse()
中对响应数据做了一些重要的处理。看起来这个代码确实在主线程上运行。最好的方法是什么?我应该为代码的特定部分定义AsyncTask,还是应该将整个网络请求放在AsyncTask中,尽管有Volley的线程机制。
答案 0 :(得分:0)
我建议不要使用AsyncTask,因为在销毁或重新创建活动时它有自己的缺点。而且如果你使用Volley的排队机制,这只会作为一个附加组件。
我能想到的一个解决方案是使用Loaders。进行网络调用并在 loadInBackground 方法中处理响应。当调用onLoadFinished时,您将获得已处理的响应。
另一种解决方案(不推荐且效率不高)是使用服务。您可以从服务进行网络呼叫并处理数据并与活动进行通信。