获取applicationWillTerminate和applicationDidEnterBackground工作

时间:2012-09-24 16:13:01

标签: iphone objective-c ios xcode

我正在尝试构建一个应用程序,其中一部分需要区分进入后台的应用程序和用户按下时从多任务窗格中关闭它的应用程序退出。然而,从我在网上的所有研究中我发现只能做以下其中一项:

a)设置应用程序不在后台运行' info.plist中的属性为YES,因此对待"转到背景"作为终止

b)默认情况下,前往后台的应用会发送通知,但不会从多任务栏终止通知。

是否可以获得两者的通知并确保应用程序在转到后台时不会终止?非常感谢帮助。我正在运行新的ios 6。

Vivek

2 个答案:

答案 0 :(得分:2)

使用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的配置方式

答案 1 :(得分:1)

每当用户从任务管理器窗格中停止应用程序时,都会向应用程序发送一个SIGKILL信号,以便它不会正常终止,并且不会调用任何选择器。

如果你想确保应用程序没有被终止(通过操作系统)应用程序应注册为需要GPS或音频后台模式(但请记住,应用程序需要以正确的方式真正使用这些功能,否则它将在审查过程中被拒绝。)

这是关于委托回调的简单说明:

  • applicationWillResignActive - 当应用程序最小化或收到呼叫时
  • applicationDidEnterBackground - 每当用户最小化应用程序时
  • applicationWillTerminate - 每当操作系统决定终止应用程序以节省内存时(但不会被用户杀死)