越来越applicationWillTerminate和applicationDidEnterBackground工作
问题描述:
我想构建一个应用程序,它的一部分处理需要区分应用程序进入后台和应用程序退出时,用户按下关闭它从多任务窗格。然而,从我在网上的所有研究中,我发现只能执行以下操作之一:越来越applicationWillTerminate和applicationDidEnterBackground工作
a)将info.plist中'应用程序不在后台运行'属性设置为YES,因此将“转到后台“作为终止
b)默认情况下,去后台的应用程序发送通知,但从多任务栏终止它不会。
是否有可能为两者获取通知并确保应用程序在进入后台时不会终止?帮助真的很感激。我运行的是新的IOS 6
维韦克
答
使用nsnotification当应用程序终止检测。这将让你知道当用户从多任务栏终止
UIApplication *app = [UIApplication sharedApplication];
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(applicationWillTerminate:)
name:UIApplicationWillTerminateNotification
object:app];
将在您的文件中调用这个选择:
- (void)applicationWillTerminate:(NSNotification *)notification {
// Do stuff before termination
}
否则它只是进入后台模式取决于你的plist如何配置为
答
每当用户从任务管理器窗格停止应用程序时,应用程序都会发送一个SIGKILL信号,因此它不会正常终止,因此不会调用选择器。
如果你想确保应用程序不会被终止(由操作系统),应用程序应该注册为需要GPS或音频背景模式(但要记住,应用程序需要真正以正确的方式使用这些功能否则在审核过程中将被拒绝)。
这里是关于委托的回调一个简单的解释:
- applicationWillResignActive - whenvever应用程序最小化或接收呼叫
- applicationDidEnterBackground - 每当应用程序被用户最小化
- applicationWillTerminate - 每当操作系统决定终止应用程序以节省内存时(但不会在用户死亡时)