рассчитать время между фоном и передним планом вашего приложения iphone?

у меня проблема с многозадачностью. я должен знать, сколько секунд прошло после того, как iphone переводит мое приложение в фоновый режим. я пытаюсь использовать applicationDidEnterBackground и applicationWillEnterForeground с объектами 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

person serhats    schedule 23.03.2011    source источник
comment
я думаю, серхат хочет знать, как получить продолжительность времени, прошедшего между событиями applicationDidEnterBackground и applicationWillEnterForeground.   -  person Vaibhav Tekam    schedule 23.03.2011
comment
это правильно Вайбхав Текам. проблема в том, что я не знаю, как это сделать.   -  person serhats    schedule 23.03.2011
comment
покажите нам, что вы пробовали (отредактируйте свой ответ кодом), и мы поможем вам это исправить.   -  person Ole Begemann    schedule 23.03.2011
comment
Просто мысль, сохраните запись даты, когда applicationWillEnterForeground и сравните ее, когда приложение активно   -  person Hanuman    schedule 23.03.2011


Ответы (1)


вы должны сохранить фоновую дату, [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"];
person Matthias Bauch    schedule 23.03.2011