如何知道应用程序是否被用户终止?
(双击Home键并按红色减号'-'键)
有时你确实会得到UIApplicationWillTerminateNotification
(你也可以在你的应用程序委托中实现applicationWillTerminate:
方法),但在这种情况下,不能保证你会得到任何通知。所以不要依赖它。
你不会收到通知,如果你的应用程序是"暂停",也就是说,它是在后台,但没有运行。在暂停的情况下,你只是被不可捕捉的SIGKILL
杀死。当你因内存不足而被杀死时也是如此。
来自applicationWillTerminate:
的文档(重点是我的):
对于不支持后台执行或链接到iOS 3的应用程序。X或更早版本,此方法总是在用户退出应用程序时调用。对于支持后台执行的应用程序,当用户退出应用程序时通常不会调用此方法,因为在这种情况下,应用程序只是移动到后台。但是,在应用程序在后台运行(没有挂起)并且系统由于某种原因需要终止它的情况下,可能会调用方法。
当用户终止应用程序时:
- (void)applicationWillTerminate:(UIApplication *)application{
}
应用程序将进入非活动状态:
- (void)applicationWillResignActive:(UIApplication *)application
{
NSLog(@"Application Did Resign Active");
}
用户按Home键:
- (void)applicationDidEnterBackground:(UIApplication *)application
{
NSLog(@"Application Did Enter Background");
}
试试这个:
- (void)applicationWillTerminate:(UIApplication *)application
{
/*
Called when the application is about to terminate.
Save data if appropriate.
See also applicationDidEnterBackground:.
*/
}
你应该在实现UIApplicationDelegate
的类中实现上面的方法
还有一些注意事项:如果你通过Xcode(停止调试按钮)停止应用程序,该方法将不会被调用。所以在测试时要有耐心。
还有:
- (void)applicationDidEnterBackground:(UIApplication *)application {
}
如果你想知道它是否进入背景,可能会有帮助;)