Операции в фоновом режиме
Я проводил некоторые исследования о считывании данных акселерометра, когда приложение работает в фоновом режиме, и обнаружил, что нет чистого решения этой проблемы. Вы можете использовать обратный вызов из других API-интерфейсов, таких как воспроизведение звука, запись звука, получение обновлений местоположения и т. Д. Однако я нашел интересную вещь.
Когда я запускаю приведенную ниже функцию и нажимаю кнопку "Домой", приложение переходит в фоновый режим, но "запущенное" сообщение продолжает записываться в журнал.
- (void)updateAccelerometer {
while (YES) {
NSLog(@"running");
}
}
Другая интересная вещь заключается в том, что я отключил режимы фона.
Мой вопрос заключается в том... Могу ли я использовать этот подход с бесконечным циклом для чтения данных акселерометра CMMotionManager, когда приложение находится в фоновом режиме? Это похоже на решение. Кто-нибудь использовал это? Кто-нибудь знает другой подход для чтения данных CMMotionManager в фоновом режиме?
Любая идея ссылки может быть полезной. Если у вас есть мысли, пожалуйста, поделитесь со мной. Спасибо за ваше время.
1 ответ
Это не будет работать после времени по умолчанию, предусмотренного для всех приложений, чтобы завершить работу в фоновом режиме. Если вы попробуете его на устройстве, вы увидите, что оно может остановиться примерно через 60 секунд. Мало того, что процессор ужасно делает такой цикл и значительно замедляет работу машины, особенно если это основной поток. Раньше были приложения, которые продавались как грелки для рук, которые делали бы именно это, если вы понимаете, о чем я.