计算你的iPhone应用程序的背景和前景之间的时间?

时间:2011-03-23 10:26:46

标签: iphone timeout multitasking

我遇到多任务问题。我应该知道iphone将我的应用程序放到后台后经过了多少秒。我尝试将applicationDidEnterBackgroundapplicationWillEnterForeground与NSDate对象一起使用,但无法成功获得时间。

任何人都能帮助我吗?

编辑:

- (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

1 个答案:

答案 0 :(得分:1)

你必须保留backgrounddate,[NSDate date]返回一个自动释放的对象,在自动释放池耗尽后,这个消失了。

尝试

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

或创建属性并使用setter。 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"];