2015-07-26 3 views
2

Мне нужно запустить таймер в фоновом режиме, когда мое приложение закрыто, однако я читал, что это невозможно. Я знаю, что я могу запустить его в фоновом режиме в течение ~ 10 минут, но мне нужно значительно больше (до 2 часов).Запуск таймера в 'background', когда приложение закрыто

Мне было интересно, есть ли способ сделать это, сохранив значение таймера при закрытии приложения, текущее время, извлекая их при повторном открытии и сравнивая их с текущим временем, чтобы получить разницу. Затем я смогу перезапустить таймер и добавить значения вместе.

У кого-нибудь есть предложения относительно того, как я мог это сделать?

Спасибо!

+0

Не можете ли вы сохранить время в виде текстового файла, а затем в следующий раз открыть и сравнить? Простая логика калькулятора времени, такая как используемая в ссылке, могла бы работать: http://www.timeanddate.com/date/timeduration.html (Но, конечно, вам нужно закодировать логику) –

+0

Как было сказано ранее, лучший это сохранить его. Вы говорите нам о таймере, но, возможно, ваша функциональность может быть реализована другим способом (уведомление? ...) * Я пытаюсь найти другой способ, но зависит от того, что вам действительно нужно *. – MacKentoch

ответ

2

Правильный подход заключается в том, чтобы поддерживать иллюзию, что таймер работает, фактически не поддерживая его. Есть два аспекта этот:

  1. Перед тем как приложение выходит на передний план, он должен сохранять информацию о таймере (например, либо время таймера начался, если вы подсчитывая или время таймера должны остановитесь, если вы рассчитываете). Вы можете использовать различные технологии для сохранения этой информации (например, plist, keyed archiver, Core Data и т. Д.) В постоянном хранилище.

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

  2. Если вы рассчитываете на некоторое время (то есть вы хотите сообщить пользователю, когда достигнут конкретный момент времени, даже если приложение не запущено), вы можете использовать локальное уведомление. См. Раздел Local and Remote Notification Programming Guide, посвященный локальным уведомлениям.

Смежные вопросы