2011-11-03 132 views

回答

5

我不认为这是可能的。这么做的意义何在?

最好的修补程序(不知道你在做什么)是当你的应用程序进入后台,然后当它回到前台时,存储当前的时间戳,看看5分钟是否已经过去并重置数据或者其他的东西。

+0

这是有道理的。为了提供更多的洞察力,想象它就像是一个银行应用程序:如果你简单地离开应用程序,你想在你回来的时候拿起你离开的地方。但是,如果您已经完成了一段时间,应用程序会在您回来时开始启动您(为了安全和方便)。认为这仍然是最好的选择? – user1007895

+0

是的,我认为这仍然是最好的选择。 :)你不想要的是几个小时后有人拿到我的手机,并且多任务进入我的银行应用程序并能够使用所有功能,所以存储时间戳,以及当他们回到应用程序时超过5分钟,然后再次启动它们。 :) –

+0

有没有最好的方法来做到这一点?我的整个应用程序生活在1导航控制器。 – user1007895

2

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

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

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 
+0

这是有道理的。但是,如何杀掉应用程序并重新启动它,而不必再次点击该图标? – user1007895

+0

你可以用'exit(0)'来杀死应用程序;''但我不知道如何启动应用程序,真的我不知道即使是可能的。我会尝试搜索一些关于 – Tommaso

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]; 
} 
相关问题