2011-11-03 82 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]; 
} 
相關問題