2011-03-23 118 views
1

我有多任务问题。我应该知道iPhone在将应用程序放到背景后经过了多少秒钟。我尝试使用带有NSDate对象的applicationDidEnterBackgroundapplicationWillEnterForeground,但无法成功获取时间。计算iphone应用程序的背景和前景之间的时间?

任何人都可以帮助我吗?

编辑:

- (void)applicationDidEnterBackground:(UIApplication *)application { 

    backgroundDate = [NSDate date]; 
    NSLog(@"background time= %@", backgroundDate); 

} 


- (void)applicationWillEnterForeground:(UIApplication *)application { 
    //– timeIntervalSinceNow 

    NSLog(@"background time2= %@", backgroundDate); 

    NSDate *date = [NSDate date]; 
    NSLog(@"foreground time= %@", date); 

} 

日志:

2011-03-23 12:47:58.405 Sanal Market[1783:207] background time= 2011-03-23 10:47:58 +0000 

2011-03-23 12:48:00.730 Sanal Market[1783:207] background time2= <CAContextImpl: 0x5416e10> 

2011-03-23 12:48:00.731 Sanal Market[1783:207] foreground time= 2011-03-23 10:48:00 +0000 
+0

哪来的问题? – ryyst 2011-03-23 10:28:18

+0

我想serhats想知道如何获得在applicationDidEnterBackground和applicationWillEnterForeground事件之间传递的持续时间。 – 2011-03-23 10:35:46

+0

这是rijht Vaibhav Tekam。问题是我不知道该怎么做。 – serhats 2011-03-23 10:38:35

回答

1

您必须保留backgrounddate,[NSDate date]返回一个自动释放的对象,并自动释放池已经被抽干后,该走了。

尝试

[backgroundDate release]; 
backgroundDate = [[NSDate date] retain]; 

或创建一个属性,并使用二传手。 self.backgroundDate = [NSDate date];


如果你想计算,即使应用程序被迫从操作系统退出,而这是在后台,你应该日期保存到NSUserDefaults的时间:

// save date in userdefaults 
[[NSUserDefaults standardUserDefaults] setObject:[NSDate date] forKey:@"goingToBackGroundDate"]; 

// get date back to calculate time in background 
NSDate *goingToBackGroundDate = [[NSUserDefaults standardUserDefaults] objectForKey:@"goingToBackGroundDate"]; 
+0

谢谢大家的帮助 – serhats 2011-03-23 12:03:23

相关问题