Почему Android WebView отправляет событие beforeunload, когда оно не выгружается? - PullRequest
0 голосов
/ 14 января 2019

Мое приложение, основанное на Cordova, прослушивает «beforeunload», чтобы выполнить некоторую очистку и перевести приложение в состояние выхода, в результате чего оно не будет пытаться выполнить определенные действия, которые могут быть не завершены (например, обновления базы данных). .

Проблема в том, что в последнее время (4 клиента сообщили о проблемах, связанных с этим за последний месяц, для приложения, которое не изменилось за 12 месяцев, работало нормально в течение многих лет), мое приложение отправляется на событие "beforeunload" после нахождения в фоновом режиме, скажем, 5 минут, но затем он фактически не выгружается.

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

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

Другой вариант - переключиться на использование события «unload», а не «beforeunload», которое мне еще предстоит протестировать должным образом, но может быть более подходящим вариантом.

Мой вопрос на самом деле: это странное поведение 'beforeunload', которое следует ожидать / знать, или это ошибка в веб-просмотре?

Мое использование beforeunload восходит на 4 или 5 лет, поэтому оно вполне может устареть и нуждается в пересмотре.

1 Ответ

0 голосов
/ 19 июня 2019

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...