我想在用户打开应用时记录时间戳。现在,我能够使用ViewDidLoad
方法进行记录,但是,一旦用户关闭应用程序并进入后台然后再次打开应用程序,我就无法获得时间戳,因为{{1不再运行了。你们有谁知道我的时间戳代码在哪里?
答案 0 :(得分:3)
您可以将其放在- (void)applicationDidBecomeActive:(UIApplication *)application
内,但这不是一个好方法,因为启动应用程序的用户不是唯一会导致时间戳保存的活动,因为还有其他情况可能会调用此方法。
来自Apple的Documentation
applicationDidBecomeActive:告诉代理该应用程序 已经变得活跃了。
调用此方法是为了让您的应用程序知道它 从非活动状态转为活动状态。这可能是因为你的 应用程序由用户或系统启动。应用可以 如果用户选择忽略一个,也会返回活动状态 发送的中断(例如来电或短信) 应用程序暂时处于非活动状态。
正确的方法是将存储时间戳的代码放在application:didFinishLaunchingWithOptions:
和applicationWillEnterForeground:
内
第一个方法将在第一次启动时调用,第二个方法将在从后台启动应用程序时调用。由于忽略的中断不会将应用程序发送到后台,因此在这种情况下不会调用applicationWillEnterForeground
,因此在用户忽略电话呼叫后,您将不会存储时间戳。
检查this answer,因为它很好地总结了处理将应用程序发送到后台并将其恢复到前台所涉及的方法的作用,以及您应该将它们用于每个方法。
答案 1 :(得分:2)
答案 2 :(得分:0)
尝试使用- (void)viewDidAppear:(BOOL)animated:
代替。只要视图出现在屏幕上,就会调用它。
或者您可以查看UIApplicationDelegate
并尝试实施以下内容:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
或
- (void)applicationDidBecomeActive:(UIApplication *)application