与模拟器和 Web 相比,实际 android 设备中的响应时间变慢
Retrofit Slower response time in real android devices when compared to emulator and web
我正在从 Android 设备进行 restful API 调用以填充列表视图。
I have used swagger codegen to generate my retrofit client .
Dagger 2 for dependency injection
Device : Asus Zenfone 5
我尝试过从邮递员、网络和模拟器 (genymotion) 中拨打电话,与真实设备相比,它要快得多。
有趣的是,每次我重新启动 phone 两到三个请求时,响应时间都是正常的,之后会变慢。
我阅读了一些关于 okHTTP 中 gzip 压缩的博客,并尝试实现它但没有效果。
如果有人能帮我解决这个问题,那将非常有帮助。
反应慢与您无关 phone 这可能是由多种原因造成的。下面提到了我知道的一些值得注意的原因。
1) 与使用机器网络连接(wifi 或 lan 连接)的模拟器相比,您设备上的互联网连接速度可能较慢。
2) 后台有多个应用程序在您的设备上使用互联网。检查应用程序 运行 后台进程并停止它们。
确保使用 speedtest.net 在您的设备上测试您的互联网速度。希望对你有帮助。
当我在调试器中 运行 我的应用程序时,它的速度非常慢,无法使用。
当我 运行 它在调试器之外时,它表现得更好。
So conclusion is that Mentioned problem was not related with tool and
libraries that I was using . Issue was with USB debugging .
Since I was new To android development I was not aware of the
performance of APP in USB debugging mode .
在改造中,它做了以下工作:
- 建立
Retrofit
class。
- 使用 DynamicProxy 实现接口
- 根据注解解析并创建Http请求。
- 在线程池中使用 OkHttp 发送和接收 HTTP(套接字)IOs(在 Android 中,网络无法在主线程上完成)。
- 使用一些库(例如 gson)反序列化您的 Http 主体。
- 在回调中更新UI。
在您的 phone 中,我认为 1、2、3 不是必需的,它们甚至可以在主线程或缓存中完成。在我的设备(Qcom615, 2Gram)中,不到一毫秒。
所以你需要调试你的网络。
一一解决问题:
- 您的服务器是使用 HTTPS 还是 no-cacahe 或 no-gzip? Logging你的数据,告诉你的服务器合作伙伴,他们可以给你一些建议。
- 为 converters 尝试更快的库。
- 改进您的视图代码(例如 void redraw/relayout,取消主线程中的长期作业)。
我正在从 Android 设备进行 restful API 调用以填充列表视图。
I have used swagger codegen to generate my retrofit client .
Dagger 2 for dependency injection
Device : Asus Zenfone 5
我尝试过从邮递员、网络和模拟器 (genymotion) 中拨打电话,与真实设备相比,它要快得多。
有趣的是,每次我重新启动 phone 两到三个请求时,响应时间都是正常的,之后会变慢。
我阅读了一些关于 okHTTP 中 gzip 压缩的博客,并尝试实现它但没有效果。
如果有人能帮我解决这个问题,那将非常有帮助。
反应慢与您无关 phone 这可能是由多种原因造成的。下面提到了我知道的一些值得注意的原因。
1) 与使用机器网络连接(wifi 或 lan 连接)的模拟器相比,您设备上的互联网连接速度可能较慢。
2) 后台有多个应用程序在您的设备上使用互联网。检查应用程序 运行 后台进程并停止它们。
确保使用 speedtest.net 在您的设备上测试您的互联网速度。希望对你有帮助。
当我在调试器中 运行 我的应用程序时,它的速度非常慢,无法使用。 当我 运行 它在调试器之外时,它表现得更好。
So conclusion is that Mentioned problem was not related with tool and libraries that I was using . Issue was with USB debugging .
Since I was new To android development I was not aware of the performance of APP in USB debugging mode .
在改造中,它做了以下工作:
- 建立
Retrofit
class。 - 使用 DynamicProxy 实现接口
- 根据注解解析并创建Http请求。
- 在线程池中使用 OkHttp 发送和接收 HTTP(套接字)IOs(在 Android 中,网络无法在主线程上完成)。
- 使用一些库(例如 gson)反序列化您的 Http 主体。
- 在回调中更新UI。
在您的 phone 中,我认为 1、2、3 不是必需的,它们甚至可以在主线程或缓存中完成。在我的设备(Qcom615, 2Gram)中,不到一毫秒。
所以你需要调试你的网络。
一一解决问题:
- 您的服务器是使用 HTTPS 还是 no-cacahe 或 no-gzip? Logging你的数据,告诉你的服务器合作伙伴,他们可以给你一些建议。
- 为 converters 尝试更快的库。
- 改进您的视图代码(例如 void redraw/relayout,取消主线程中的长期作业)。