Операции в фоновом режиме

Я проводил некоторые исследования о считывании данных акселерометра, когда приложение работает в фоновом режиме, и обнаружил, что нет чистого решения этой проблемы. Вы можете использовать обратный вызов из других API-интерфейсов, таких как воспроизведение звука, запись звука, получение обновлений местоположения и т. Д. Однако я нашел интересную вещь.

Когда я запускаю приведенную ниже функцию и нажимаю кнопку "Домой", приложение переходит в фоновый режим, но "запущенное" сообщение продолжает записываться в журнал.

- (void)updateAccelerometer {
    while (YES) {
        NSLog(@"running");
    }
}

Другая интересная вещь заключается в том, что я отключил режимы фона.

Мой вопрос заключается в том... Могу ли я использовать этот подход с бесконечным циклом для чтения данных акселерометра CMMotionManager, когда приложение находится в фоновом режиме? Это похоже на решение. Кто-нибудь использовал это? Кто-нибудь знает другой подход для чтения данных CMMotionManager в фоновом режиме?

Любая идея ссылки может быть полезной. Если у вас есть мысли, пожалуйста, поделитесь со мной. Спасибо за ваше время.

1 ответ

Решение

Это не будет работать после времени по умолчанию, предусмотренного для всех приложений, чтобы завершить работу в фоновом режиме. Если вы попробуете его на устройстве, вы увидите, что оно может остановиться примерно через 60 секунд. Мало того, что процессор ужасно делает такой цикл и значительно замедляет работу машины, особенно если это основной поток. Раньше были приложения, которые продавались как грелки для рук, которые делали бы именно это, если вы понимаете, о чем я.

Другие вопросы по тегам