2013-07-28 2 views
1

Я хотел бы записать временную метку всякий раз, когда пользователь открывает приложение. Теперь я смог записать в методе ViewDidLoad, однако, как только пользователь закрывает приложение, и он переходит на задний план, а затем снова открывает приложение, я не могу получить отметку времени, потому что ViewDidLoad больше не запускается. Есть ли у вас какие-либо идеи, куда поместить мой временной код?Запись TimeStamp каждый раз, когда пользователь использует приложение

+0

Вместо этого используйте viewWillAppear. http://stackoverflow.com/questions/3643559/what-uiviewcontroller-method-is-called-when-opening-app-from-background – Madivad

+0

'viewWillAppear:' будет [не дозвонились] (HTTP://stackoverflow.com/questions/5277940/why-does-viewwillappear-not-get-called-when-an-app-comes-back-from-the-background), когда приложение входит на передний план. – omz

ответ

3

Вы можете поместить его в - (void)applicationDidBecomeActive:(UIApplication *)application, но это не является хорошим подход, поскольку пользователь, запускающий приложение, не является единственным действием, которое приведет к сохранению метки времени, поскольку существуют другие ситуации, когда этот метод может получить заполненными.

От компании Apple Documentation

applicationDidBecomeActive: Сообщает делегат, приложение стал активным.

Этот метод вызван, чтобы сообщить вашему приложению, что он перешел из неактивного в активное состояние. Это может произойти, потому что ваше приложение было запущено пользователем или системой. Приложения могут также возвращаться к активному состоянию, если пользователь предпочитает игнорировать прерывание (например, входящий телефонный звонок или SMS-сообщение), которое временно отправило приложение в неактивное состояние.

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

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

0

Попробуйте использовать - (void)viewDidAppear:(BOOL)animated: . Он вызывается всякий раз, когда на экране появляется вид.

Или вы можете посмотреть в UIApplicationDelegate и попробовать реализовать что-то вроде:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions

или

- (void)applicationDidBecomeActive:(UIApplication *)application

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