Я занимаюсь разработкой приложения на нативном языке, и мы заметили нечто странное.Когда приложение возвращается из приостановленного состояния (это не происходит из нормального фонового состояния, я думаю), часто, выборка останавливается впоследствии.
Чтобы активировать его, включите функцию экономии заряда батареи (я думаю, что это заставит приложение намного быстрее перейти в приостановленное состояние), затем переведите приложение в фоновый режим, на минуту сделайте другие вещи на телефоне или5-10, снова откройте приложение и используйте его.
В нашем случае мы перешли на другой экран, который пытался получить три списка объектов одновременно из серверной части.В бэкэнде мы заметили, что поступает только один вызов, и Promise.all(...)
на трех вызовах никогда не разрешается и не перехватывается.Так что ошибки тоже нет.После этого все звонки снова работают, и проблема, похоже, исчезла.Так что это разовая проблема.
Этого никогда не происходит, если не выходить из приостановленного состояния.
Это крайне сложно для отладки, поскольку, когда приложение переходит в состояние ожидания, отладчик отключается.
Мы еще не тестировали это на Android, возможно, проблема существует и там.
Мое чувство кишки говорит мне, что это как-то так с внутренней сетью IOSили получить библиотеку RN.(например, при повторном подключении к Wi-Fi, переходе с 4G или что-то в этом роде)
Кто-то уже сталкивался с такой же проблемой или имеет более полное представление о том, почему это происходит или как решить эту проблему?(например, используйте механизм тайм-аута и повторных попыток, который я бы хотел предотвратить, принудительно вызовите API-вызов при изменении состояния на активный - хотя реактивный-нативный не может обнаружить приостановленное состояние)
Заранее спасибо!
РЕДАКТИРОВАТЬ:
Забыл добавить: мы используем реактивный родной 54, но в процессе обновления до 57. Я сообщу, еслипроблема все еще происходит в 57 ...
РЕДАКТИРОВАТЬ 2: Atm, мы решили ее, выполняя вызовы друг за другом, а не одновременно (так fetch ().then (fetch (). then (fetch ())), который, кажется, решает проблему. Итак, опять же, выполнение вызовов в одно и то же время, как правило, никогда не дает сбой, только после приостановленного состояния приложения.