Как рано можно было вызывать сеансReReceptionApplicationContext в приложении iPhone при его запуске - PullRequest
0 голосов
/ 21 ноября 2018

В моем приложении для телефона WCSession активируется в методе AppDelegate didFinishLaunchingWithOptions.Приложение часов отправляет applicationContext в приложение телефона.Предположим, что приложение телефона не работает во время этой передачи, и когда приложение телефона будет запущено позже, как скоро звонок на didReceiveApplicationContext может поступить в приложение телефона?Я не беспокоюсь о задержке или как поздно это прибывает.Мне интересно, есть ли вероятность того, что вызов может прийти до запуска метода rootViewController viewDidLoad.Может ли это событие сеанса попасть в цикл событий где-то между событиями UIWindow создания и viewDidLoad на rootViewController, когда приложение запускается на телефоне?

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

приложения AppDelegate. Я использую раскадровку.Однако я заинтересован в изучении любых возможных различий, если бы основной код был создан в коде.Также действия в didReceiveApplicationContext не затрагивают ни одно из представлений или подпредставлений.Он просто сохраняет данные и уведомляет любые зарегистрированные контроллеры представления.

1 Ответ

0 голосов
/ 02 декабря 2018

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

Когда я использовал только applicationContext для передачи данных в не работающее приложение на iPhone, оно всегда доставлялось после вызова метода viewDidLoadна rootViewController, как и когда приложение телефона в конечном итоге запущено.Тем не менее, если я выполню sendMessage с часов на телефон после sendApplicationContext, это приведет к запуску приложения на телефоне, как и ожидалось.В это время буферизованная applicationContext иногда, кажется, доставляется на телефон даже до загрузки вида rootViewController.

...