2011-09-22 82 views
0

如何知道应用程序是否由用户终止?如何知道应用是否被用户终止?

(双击Home键,然后按下红色的减号“ - ”按钮)

我需要样品或伪代码...

+0

的可能重复[如何知道应用程序是否被用户或iOS(10分钟背景后终止) ](http://stackoverflow.com/questions/7343404/how-to-know-whether-app-is-terminated-by-user-or-ios-after-10min-background) – Ali

回答

2

有时候你得到的(你也可以实现applicationWillTerminate:方法在你的应用程序委托中),但不能保证你在这种情况下完全得到任何通知。所以不要依赖它。

如果您的应用程序处于“暂停”状态,即在后台但未运行,您将不会收到通知。在暂停的情况下,您只会因不可捕捉的SIGKILL而死亡。当你因内存不足而死亡时也是如此。

从文档applicationWillTerminate:(重点煤矿):

对于不支持后台执行或者是针对iOS的3.x的链接或更早版本的应用程序,当用户退出应用程序这种方法总是叫。对于支持后台执行的应用程序,当用户退出应用程序时通常不会调用此方法,因为在这种情况下应用程序只是移至后台。但是,在应用程序在后台运行(未暂停)且系统因某种原因需要终止该应用程序的情况下,将调用此方法可能会

+0

为什么?我认为这是有保证的。但如果您在Xcode中停止应用程序,则无法保证。 – Nekto

+0

@Nekto:查看更新的答案。 – DarkDust

2

试试这个:

- (void)applicationWillTerminate:(UIApplication *)application 
{ 
    /* 
    Called when the application is about to terminate. 
    Save data if appropriate. 
    See also applicationDidEnterBackground:. 
    */ 
} 

你应该实现上面的类,它实现UIApplicationDelegate

一些更多的笔记方法:该方法不会被调用,如果你停止你的应用程序通过Xcode(停止调试按钮)。所以测试时要耐心等待。

+2

未调用此方法。我检查了控制台(Organizer-Devices) – ChangUZ

+0

NSLog(@“_____ Appliction will term-。”);不叫。我把这个代码放在applictaionWillTerminate方法中。 – ChangUZ

+0

我总是停止调试模式后测试。 – ChangUZ

2

当用户关闭应用程序:

- (void)applicationWillTerminate:(UIApplication *)application{ 

} 

应用将进入非激活状态:

- (void)applicationWillResignActive:(UIApplication *)application 
{ 
    NSLog(@"Application Did Resign Active"); 
} 

用户按下Home键:

- (void)applicationDidEnterBackground:(UIApplication *)application 
{ 
    NSLog(@"Application Did Enter Background"); 
} 
+0

你检查applicationWillTerminate是否被调用? – ChangUZ

+0

我已经尝试从跳板和XCode中杀死应用程序,并且它没有被调用,我想你将不得不实现applicationDidEnterBackground以确保你的应用程序做你想要的。 – ender

+0

我设法让这种方法起作用的唯一方法是在应用的Info.plist中禁用“多任务”。这是确保这种方法总是被调用的唯一方法。然而,这不是一个好的解决方案,所以只需在applicationDidEnterBackground中执行任务即可 – ender

0

也有是这样的:

- (void)applicationDidEnterBackground:(UIApplication *)application { 

} 

可能是,如果你想知道没有它进入后台有帮助;)

相关问题