iPhone应用程序背景超时

时间:2011-11-03 16:40:33

标签: iphone ios

我希望我的iPhone应用程序在后台运行5分钟后终止。这样做的最佳方式是什么?

4 个答案:

答案 0 :(得分:5)

我不认为这是可能的。这样做有什么意义?

最好的解决方法(不知道你要做什么)是存储当你的应用程序进入后台时的当前时间戳,然后当它回到前台时看看是否已经过了5分钟并重置数据或东西。

答案 1 :(得分:2)

在代码中明确终止您的应用是不好的做法。在任何情况下,您的应用程序在后台处于活动状态时,您只能在运行一段代码时执行任何操作(注册后台操作)。

如果您希望您的应用停止后台操作或将自身重置为已知状态(如果已在后台进行特定时间间隔(例如5分钟)),请在应用进入后台时存储时间戳并对时间戳作出反应适当地在任何操作中以及当应用程序返回前台时。

答案 2 :(得分:0)

您可以尝试这样做

LaData=[[NSDate alloc] initWithTimeIntervalSinceNow:300];
[[NSRunLoop currentRunLoop] runMode: NSDefaultRunLoopMode beforeDate:LaData];

NSDate *ladatadiarrivo=[NSDate dateWithTimeIntervalSinceNow:300];
while ([ladatadiarrivo timeIntervalSinceNow]>0) {
    if (ExitFlag) return; //To exit when reactivate              

}
//Code to Kill Application

答案 3 :(得分:0)

我说托马斯是对的。您应该可以使用“用户默认值”轻松完成此操作。在您的代表中,您只需要进行一些测试..

//See how much time has passed when the app is opened
- (void)applicationWillEnterForeground:(UIApplication *)application {
      NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
      NSDate *lastUsed = (NSDate*)[userDefaults objectForKey:@"LAST_USED"];
      NSDate *now = [NSDate date];
      NSTimeInterval interval = [now timeIntervalSinceDate:lastUsed];

      if(interval/60 > 5) { //more than 5 min have passed
           //Force a login
      } else {
           //Continue your session
      }
}

确保在应用关闭时节省您的时间。

//Save the current time when the app is closed
- (void)applicationDidEnterBackground:(UIApplication *)application {
    NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
    [userDefaults setObject:[NSDate date] forKey:@"LAST_USED"];
    [userDefaults synchronize];
}