如何知道app的终止?

时间:2011-07-18 16:48:15

标签: iphone objective-c

如何知道app的终止?

我在viewDidLoad

中添加了此代码
[[NSNotificationCenter defaultCenter] addObserver:self  
selector:@selector(applicationWillTerminate:) name:UIApplicationWillTerminateNotification 
object : nil];

如果应用程序结束,它将通知我终止。

- (void)applicationWillTerminate:(NSNotification*) notif{
    NSLog(@"program will end");
}   

但它不起作用...
我终止了应用程序,单击主页按钮并在2秒内按下主页按钮,然后单击应用程序图标的' - '按钮。

我希望收到有关应用终止的通知 并且在应用程序终止时调用了要调用的函数。(是viewDidLoad吗?)
单击“ - ”按钮终止应用程序是发送应用程序SIGKILL?

3 个答案:

答案 0 :(得分:4)

  

我终止了应用程序,点击主页按钮并在2秒内按下主页按钮,然后点击应用程序图标的' - '按钮。

如果按主页按钮,您的应用程序将被发送到后台。当你杀了它(通过按-按钮)时,它可能不会收到通知,因为它不再运行了。

在iOS上调用

applicationWillTerminate< 4.0,当没有多任务处理(后台)可用或在info.plist文件中设置UIApplicationExitsOnSuspend时。

在iOS 4.x上,当您的应用程序发送到后台时,它会收到applicationWillEnterForeground:。查看UIApplicationDelegate Protocol Reference了解更多信息:

  

您应该使用此方法释放共享资源,保存用户数据,使计时器无效,并存储足够的应用程序状态信息,以便将应用程序恢复到当前状态,以防以后终止。

请注意,如果您同时支持iOS< applicationWillEnterForegroundapplicationWillTerminate,则需要同时执行此操作。 4

另请查看this post from S.O

答案 1 :(得分:1)

这应该有效,您是否尝试将日志记录添加到应用程序委托方法applicationWillTerminate:方法中?

编辑:

对于iOS 4+设备,您需要在applicationWillEnterBackground中执行任何关闭操作,而不是在您被暂停时调用它,并且是正确的时间进行最终工作。

答案 2 :(得分:0)

你应该实施applicationDidEnterBackground并做好终止准备。如果您的应用在后台终止,则不会收到任何其他通知。