Непрерывная временная шкала в приложении для iPhone?

Предыстория: приложение Workout разработано так, чтобы иметь непрерывную временную шкалу, в которую я могу затем вводить упражнения и повторения, которые я делаю в режиме реального времени, а затем отображать результаты в режиме реального времени.

Проблема: когда iphone слишком долго спит, мы теряем непрерывность временной шкалы и перезагружаемся. Мы не выяснили, как обновлять временную шкалу, пока приложение находится в спящем режиме. Я попросил его сделать вызов внутренних часов Iphone, посчитать, где должен находиться зритель, и переместить его в эту точку на временной шкале. Однако он не может понять, как это сделать.

Решения: Вы когда-нибудь слышали о вызове внутренних часов? Возможно, лучший вопрос: можете ли вы придумать другой способ решения проблемы в целом?


person scottorn    schedule 16.07.2010    source источник


Ответы (2)


Вы можете попробовать CACurrentMediaTime, который возвращает mach_absolute_time в секундах. Это должно быть точным во время сна.

person drawnonward    schedule 16.07.2010

Не существует определенного способа, который может гарантировать, что ваше приложение будет работать в фоновом режиме вечно. (Если это то, что вам нужно) Даже Стив сказал, что это многозадачность, ресурсы iPhone очень ограничены, и это означает, что ваше приложение может быть убито, пока оно находится в фоновом режиме, без какого-либо уведомления. (Кроме уведомления, которое вы получаете при входе в фон)

Лучшее, что вы можете сделать, это снизить потребление ресурсов. (освободите как можно больше объектов). Потому что, когда системе требуется память, она начнет убивать приложения в фоновом режиме, начиная с приложения, которое использует больше ресурсов.

Если вы реализуете потоковые протоколы, то все по-другому.

Надеюсь это поможет

person nacho4d    schedule 16.07.2010
comment
Скажем, я закрываю приложение с помощью кнопки «Домой». Насколько я понимаю, приложение зависает. Есть ли способ вернуть его к жизни, перемотав временную шкалу вперед? спасибо Начо! - person scottorn; 16.07.2010
comment
ОС не замораживает его мгновенно. Это все еще живо на мгновение или дни, это зависит (см. мое объяснение выше). Вам нужно будет написать метод обновления, используя CACurrentMediaTime или CFAbsoluteTimeGetCurrent, и пересчитать ваши данные. Вероятно, вы захотите написать это внутри метода -applicationDidBecomeActive: из UIApplicationDelegate. - person nacho4d; 16.07.2010