Android的 – 是什么让改装比HttpURLConnection类的AsyncTask快?
作者:互联网
以下blog给出了各种Android Async Http客户端速度之间的比较.有人可以解释是什么使改造如此之快吗?
解决方法:
编辑:再次浏览博客文章后,单对多线程问题可能不正确.问题在于他们没有分享其性能分析/基准测试的细节.那一组数字并不能提供太多洞察力.他们说:“我们确定从API(网络)中检索数据是瓶颈”,但他们并没有那么大地分解.他们是否将所有Volley和Retrofit请求都设为单线程?他们是否尝试对AsyncTasks进行多线程处理,以便可以将苹果与苹果进行比较?他们没有指定.
如果将响应解析为JSONObject会使您的应用变慢,那么我采用的一种方法是使用JSONReader以事件驱动的方式解析响应.这可能涉及更多代码,但是好处是您可以获得细粒度的控制,因此您可以跳过所有事情,而不会浪费周期来解析不需要的值.根据您的应用程序,仅此一项就可以使速度大大提高.
我个人认为,他们认为Retrofit更易于使用,这是在我的应用中选择它来处理服务器访问的更诱人的理由.
在“执行顺序”下的AsyncTask文档中:
When first introduced, AsyncTasks were executed serially on a single background thread. Starting with
DONUT
, this was changed to a pool of threads allowing multiple tasks to operate in parallel. Starting withHONEYCOMB
, tasks are executed on a single thread to avoid common application errors caused by parallel execution.If you truly want parallel execution, you can invoke
executeOnExecutor(java.util.concurrent.Executor, Object[])
withTHREAD_POOL_EXECUTOR
.
这意味着每个请求不仅在等待上一个请求完成,还在等待其所有JSON都被读取/解析.
默认情况下,AsyncTask是单线程的,而Retrofit不是.为了使测试公平,他们应该对AsyncTasks使用ThreadPoolExecutor.不指出这种区别就以不诚实为准.我很惊讶他们不知道AsyncTask的单线程性质.
标签:retrofit2,retrofit,android 来源: https://codeday.me/bug/20191119/2032479.html