【发布时间】:2011-09-22 07:52:23
【问题描述】:
我如何知道应用程序是否被用户终止?
(双击主页按钮并按红色减号'-'按钮)
我需要示例或伪代码...
【问题讨论】:
我如何知道应用程序是否被用户终止?
(双击主页按钮并按红色减号'-'按钮)
我需要示例或伪代码...
【问题讨论】:
有时您确实会收到UIApplicationWillTerminateNotification(您也可以在您的应用委托中实现applicationWillTerminate: 方法),但在这种情况下,您并不能保证您会收到任何通知。所以不要依赖它。
如果您的应用“暂停”,即处于后台但未运行,您将不会收到通知。在暂停的情况下,您只会被不可捕获的SIGKILL 杀死。当你因内存不足而被杀死时也是如此。
来自applicationWillTerminate: 的文档(强调我的):
对于不支持后台执行或链接到 iOS 3.x 或更早版本的应用程序,当用户退出应用程序时始终调用此方法。对于支持后台执行的应用程序,当用户退出应用程序时通常不会调用此方法,因为在这种情况下应用程序只是移动到后台。但是,此方法可能在应用程序在后台运行(未暂停)并且系统出于某种原因需要终止它的情况下调用。
【讨论】:
当用户终止应用时:
- (void)applicationWillTerminate:(UIApplication *)application{
}
应用程序将进入非活动状态:
- (void)applicationWillResignActive:(UIApplication *)application
{
NSLog(@"Application Did Resign Active");
}
用户按下主页按钮:
- (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...也许它会帮助你
还有这个:
- (void)applicationDidEnterBackground:(UIApplication *)application {
}
如果您想知道它是否进入后台可能会有所帮助;)
【讨论】: