Как остановить/обработать операции пользовательского интерфейса в iOS, когда приложение переходит в фоновое состояние?

Мое приложение можно запустить через UIApplicationLaunchOptionsLocalNotificationKey в фоновом режиме. В этом случае выполняется обычный процесс настройки initail view controller и некоторых анимаций на целевой/первой странице приложения.

Мой вопрос: является ли это хорошей практикой, если я оставлю эти анимации такими, даже когда мое приложение запускается через ОС в фоновом режиме? Меня беспокоят три вещи:

  1. Некоторые анимации непрерывны, например circular-dot(UIImage) расширяются и сжимаются, используя CAAnimation.

  2. Некоторые представления добавляются и удаляются как подвиды keyWindow в зависимости от местоположения пользователя.

  3. Когда пользователь нажимает кнопку «Домой», нужно ли мне тогда также останавливать анимацию и добавлять подпредставления?

Заставлять анимацию останавливаться и возобновляться с помощью applicationDidEnterBackground и applicationWillEnterForeground кажется утомительным.


person nr5    schedule 05.10.2017    source источник
comment
Можем ли мы взглянуть на код делегата вашего приложения? Вы должны иметь возможность различать, какой тип запуска приложения происходит на основе вызова application: didReceiveLocalNotification:   -  person danh    schedule 06.10.2017
comment
@danh application: didReceiveLocalNotification не называется. Мое приложение просыпается в didFinishLaunchingWithOptions:(NSDictionary *)launchOptions, а клавиша launchOptions имеет UIApplicationLaunchOptionsLocalNotificationKey . Кроме того, когда мой код анимации выполняется (независимо от того, в каком состоянии находится мое приложение), я запрашиваю основную очередь, используя диспетчеризацию, и выполняю там операции пользовательского интерфейса. Пока все работает нормально. И поскольку эти конкретные анимации происходят через класс singleton, мне не нужно было запрашивать основную очередь везде в приложении.   -  person nr5    schedule 08.10.2017