2

我想在用户打开应用程序时记录时间戳。现在,我可以在该ViewDidLoad方法中记录,但是,一旦用户关闭应用程序并进入后台,然后再次打开应用程序,我就无法获取时间戳,因为ViewDidLoad不再运行。你们有谁知道把我的时间戳代码放在哪里?

4

3 回答 3

4

你可以把它放在里面- (void)applicationDidBecomeActive:(UIApplication *)application,但这不是一个好方法,因为启动应用程序的用户并不是唯一会导致时间戳被保存的活动,因为在其他情况下可能会调用此方法。

来自 Apple 的文档

applicationDidBecomeActive:告诉代理应用程序已激活。

调用此方法是为了让您的应用程序知道它已从非活动状态变为活动状态。这可能是因为您的应用程序是由用户或系统启动的。如果用户选择忽略将应用程序暂时发送到非活动状态的中断(例如来电或短信),应用程序也可以返回到活动状态。

正确的方法是将存储时间戳的代码都放在里面application:didFinishLaunchingWithOptions:applicationWillEnterForeground: 第一个方法将在第一次启动时调用,第二个方法将在应用程序从后台启动时调用。由于被忽略的中断不会将应用程序发送到后台,applicationWillEnterForeground因此在这种情况下不会被调用,因此您不会在用户忽略电话后存储时间戳。

检查这个答案,因为它很好地总结了处理将应用程序发送到后台并将其返回到前台所涉及的方法的作用,以及您应该使用它们中的每一个。

于 2013-07-28T00:47:58.487 回答
2

在您的应用程序委托中实施applicationDidBecomeActive:或观察UIApplicationDidBecomeActiveNotification通知。

于 2013-07-28T00:47:00.600 回答
0

尝试- (void)viewDidAppear:(BOOL)animated: 改用。每当视图出现在屏幕上时都会调用它。

或者您可以查看UIApplicationDelegate并尝试实施类似的东西:

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

或者

- (void)applicationDidBecomeActive:(UIApplication *)application

于 2013-07-28T00:47:51.217 回答