Реагируйте на собственную перезагрузку WebView, когда приложение выходит на передний план - PullRequest
0 голосов
/ 07 ноября 2018

Я работаю над приложением React Native, которое использует WebView в качестве основного экрана приложения.

Когда приложение выходит из фона на передний план, WebView перезагружается. Как я могу остановить эту перезагрузку?

Этот ответ предлагает загрузить WebView в ViewDidLoad(), а не в ViewDidAppear() или ViewWillAppear(). Является ли это реальным решением, и как я могу подтвердить или изменить способ загрузки WebView в React Native?

В качестве хакерского решения я использую onNavigationStateChange, чтобы сохранить текущий URL в AsyncStorage, а затем загрузить этот URL, когда приложение выходит на передний план. Это решение не велико, потому что оно:

  1. Разбивает историю браузера, затрагивая кнопки возврата JavaScript
  2. Не запоминает состояние формы
  3. Может отправить пользователя на страницу, к которой у него нет прямого доступа, в результате чего он будет отправлен на 404

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

1 Ответ

0 голосов
/ 09 ноября 2018

Этого не было и проблема с WebView. Перезагрузка была вызвана моим неправильным использованием React Navigation SwitchNavigator. Как упомянуто в документах a SwitchNavigator

сбрасывает маршруты в состояние по умолчанию при переключении

Этот сброс вызвал перезагрузку WebView.

...