TLDR: Обычно мы получаем событие resume
, если приложение происходит из фона.
Если в операционной системе недостаточно памяти, она может полностью очистить приложение, и мы получим событие deviceready
.Я не знаю, есть ли какие-то временные ограничения после того, как приложение завершает работу ОС, это должно происходить только в том случае, если в ОС не хватает памяти, происходит перезапуск или приложение завершается вручную пользователем.
Хорошо, давайте посмотрим на типичный жизненный цикл приложения Cordova, посмотрев документы :
- Пользователь запускает приложение и
deviceready
событие запускается после полной загрузки Cordova - Если пользователь переключается на другое приложение, собственная платформа переводит приложение в фоновый режим и запускается событие
pause
. - Если пользователь вернется к нашему приложению, приложение снова будет переведено на передний план родной платформой.Это тот момент, когда
resume
событие срабатывает.
Чтобы ответить на ваш актуальный вопрос, нам нужно взглянуть на реализацию для собственной платформы.Первый из iOS.
Приложения iOS имеют следующие состояния выполнения (Источник: developer.apple.com ):
Итак, приложение, которое помещается вфон будет переведен в фоновый режим, который описывается так:
Приложение работает в фоновом режиме и выполняет код.Большинство приложений кратко переходят в это состояние на пути к приостановке.Однако приложение, которое запрашивает дополнительное время выполнения, может оставаться в этом состоянии в течение определенного периода времени....
При условии, что наше приложение не работает в фоновом режиме / запрос дополнительного времени выполнения только ненадолго останется в этом режиме и затем перейдет в режим приостановки.
Режим приостановкиописывается так (акцент мой):
Приложение работает в фоновом режиме, но не выполняет код.Система автоматически переводит приложения в это состояние и не уведомляет их перед этим.Пока приложение приостановлено, приложение остается в памяти, но не выполняет никакого кода.
При возникновении проблемы с нехваткой памяти система может удалить приостановленные приложения без предварительного уведомления , чтобы освободить место для переднего плана.приложение.
Практически то же самое относится и к Android.Жизненный цикл действий Android немного сложнее, вы можете посмотреть подробности на developer.android.com .Нижняя строка такая же, как и для iOS ( Source ):
Система убивает процессы, когда ей нужно освободить RAM
Так что еслиОС не хватает памяти, она может полностью очистить наше приложение, и наш жизненный цикл начнется с самого начала с события deviceready
.Я не знаю, есть ли какие-либо ограничения по времени после того, как приложение завершает работу ОС, это должно происходить только в том случае, если в ОС не хватает памяти, происходит перезапуск или приложение завершается вручную пользователем.