Модернизация Более медленное время отклика в реальных устройствах Android по сравнению с эмулятором и сетью

Я делаю спокойный вызов API с устройства Android, чтобы заполнить список.

Я использовал swagger codegen для создания моего модифицированного клиента.

Кинжал 2 для инъекций зависимостей

Прибор: Asus Zenfone 5

Я попытался позвонить из почтальона, сети, а также в эмулятор (genymotion), это намного быстрее по сравнению с реальным устройством.

И интересно, что каждый раз, когда я перезапускаю свой телефон на два-три запроса, время отклика является нормальным и после этого становится медленнее.

Я прочитал некоторый блог о gzip-сжатии в okHTTP и попытаюсь реализовать это, но без эффекта.

Было бы очень полезно, если бы кто-то помог мне разобраться с проблемой.

Медленный ответ не имеет никакого отношения к вашему телефону, это может быть вызвано несколькими причинами. Ниже приводятся некоторые заметные причины, которые я знаю.

1) Подключение к Интернету на вашем устройстве может быть медленнее по сравнению с вашим эмулятором, который использует сетевое подключение вашего устройства (подключенный Wi-Fi или LAN).

2) В фоновом режиме есть несколько приложений, использующих Интернет на вашем устройстве. Проверьте приложение, выполняющее фоновый процесс, и остановите их.

Чтобы проверить скорость вашего интернет-соединения на вашем устройстве, используйте speedtest.net. Надеюсь, это поможет вам.

В модификации он выполняет следующую работу:

  1. Создайте класс Retrofit .
  2. Имплементировать интерфейс с помощью DynamicProxy
  3. Разберите и создайте запрос аннотации Http к аннотациям.
  4. Отправлять и получать HTTP (сокет) IO с помощью OkHttp в ThreadPool (в Android, сеть не может быть выполнена в основном потоке).
  5. Уничтожьте свой объект Http с помощью некоторой библиотеки lib (например, gson).
  6. Обновить интерфейс в обратном вызове.

На вашем телефоне я думаю, что 1,2,3 не нужны, их можно даже сделать на основной нити или в кеше. В моем устройстве (Qcom615, 2Gram) это займет менее одного мс.

Поэтому вам нужно отлаживать свою сеть.

Исправить проблему поочередно:

  1. Использует ли ваш сервер HTTPS или no-cacahe или no-gzip? Регистрируя свои данные и сообщите партнеру своего сервера, они могут дать вам несколько советов.
  2. Попробуйте быстрее lib для конвертеров .
  3. Улучшить код вашего представления (например, void redraw / relayout, void long-time job в основном потоке).

Когда я запускаю свое приложение в отладчике, он был непригоден медленным. Когда я запускаю его за пределами отладчика, он работает лучше.

Таким образом, вывод заключается в том, что упомянутая проблема не была связана с инструментами и библиотеками, которые я использовал. Проблема была связана с USB-отладкой.

Поскольку я был новым для разработки Android, я не знал о производительности APP в режиме отладки USB.