Android Что происходит во время HTTP-транзакции, если устройство спит? - PullRequest
0 голосов
/ 07 января 2019

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

Допустим, мы хотим сделать http-запрос на получение объекта JSON с сервера. Мы не держим никаких вейк-руков и не ставим наше приложение на передний план. Мы устанавливаем соединения и ждем нашего ответа от сервера.

Что делать, если устройство переходит в режим сна в этот самый момент (в ожидании Объект JSON). Получим ли мы объект, когда устройство проснется, или мы получим исключение тайм-аута?

Примечание

Не включайте режим ожидания в этом примере. Просто это устройство идет спать. Спасибо

Ответы [ 2 ]

0 голосов
/ 07 января 2019

Когда Android находится в режиме ожидания, устройство блокируется, а затем переходит к режим глубокого сна. В режиме глубокого сна система Android закрывает существующие сетевые соединения, такие как TCP или UDP. Если ваше приложение подключено к серверу, он теряет соединение с сервером и пытается восстановить соединение на основе методов попытки повторного подключения, настроенных для клиента. Но если ваше приложение является сервером, весь клиент потеряет связь с сервер, и вы должны снова запустить сокет на сервере и попытаться подключитесь еще раз от клиентов.

С https://stackoverflow.com/a/33366487/806328

дооснащение просто «прислушивается» к сетевому соединению, когда оно теряет его - ошибка времени ожидания соединения через указанное время

0 голосов
/ 07 января 2019

В этом случае ваше устройство перейдет в спящий режим, и вы получите Обратный вызов метода жизненного цикла активности , то есть onPause () и onStop , пока ваша служба будет работать. Этот процесс не остановит ваш вызов веб-службы. Как только вы получите ответ от сервера, ваше приложение получит обратный вызов (если вы реализовали). И ничего плохого не произойдет, пока вы не убьете свое приложение перед сном. Если после веб-службы вы, возможно, обращаетесь к некоторым переменным, относящимся к деятельности, которая запустила веб-службы . Это приведет к сбою. Когда вы отменяете состояние сна, вы получите обратный вызов onStart и onResume Это означает, что когда ваше устройство перешло в спячку, оно не прерывало вашу активность.

...