改进与仿真器和networking相比,在真实的android设备中响应时间更慢

我正在从Android设备进行一个安静的API调用来填充列表视图。

我用swagger codegen生成我的翻新客户端。

匕首2dependency injection

设备:华硕Zenfone 5

我试图从邮差,networking和模拟器(genymotion)打电话,它比真实的设备要快得多。

而有趣的是,每次当我重新启动我的手机两三个请求的响应时间是正常的,然后变慢。

我读了一些关于okHTTP的gzip压缩的博客,并试图实现,但没有效果。

如果有人能帮我弄清楚这个问题,那真的很有帮助。

  • 改造2:从响应机构获取JSON
  • 改进日志logging拦截器exception
  • 与Retrofit 2并行执行http请求
  • %3F,而不是我的Retrofiturl中的问号
  • 如何使用rxjava在retrofit 2.0中获取请求URL?
  • RxJavaCallAdapterFactory无法转换为Factory
  • 改造“IllegalStateException:已经执行”
  • 只用表单数据改造2
  • 慢响应与您的手机没有任何关系,可能是由于几个原因。 我知道一些明显的原因在下面提到。

    1)您的设备上的互联网连接可能会比使用您的机器的networking连接(无线或局域网连接)的模拟器慢一些。

    2)在您的设备上有多个应用程序在后台使用互联网。 检查应用程序运行后台进程并停止它们。

    要确保使用speedtest.net在您的设备上testing您的互联网速度。 希望它可以帮助你。

    在改造中,它做了以下工作:

    1. build立Retrofit类。
    2. 使用DynamicProxy实现接口
    3. parsing和创buildHttp请求accourding到注释。
    4. 使用ThreadPool中的OkHttp发送和接收HTTP(套接字)IO(在Android中,networking无法在主线程上完成)。
    5. 用一些lib(例如.gson)反序列化你的Http体。
    6. 在callback中更新UI。

    在你的手机中,我认为1,2,3是不必要的,甚至可以在主线程或caching中完成。 在我的设备(Qcom615,2Gram)中,它将不到一个毫秒。

    所以你需要debugging你的networking。

    解决问题一个一个:

    1. 你的服务器是否使用HTTPS或不使用cacahe或no-gzip? logging您的数据并告诉您的服务器的合作伙伴,他们可以给你一些build议。
    2. 尝试更快的lib 转换器 。
    3. 改善你的视图的代码(例如,void redraw / reloadout,在主线程中使一个长时间的工作无效)。

    当我在debugging器中运行我的应用程序时,速度很慢。 当我在debugging器外部运行它时,性能会更好。

    所以,结论是提到的问题与我使用的工具和库没有关系。 问题在于USBdebugging。

    由于我是新来的android开发,我没有意识到在USBdebugging模式下APP的性能。