如何知道app的终止?
我在viewDidLoad
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(applicationWillTerminate:) name:UIApplicationWillTerminateNotification
object : nil];
如果应用程序结束,它将通知我终止。
- (void)applicationWillTerminate:(NSNotification*) notif{
NSLog(@"program will end");
}
但它不起作用...
我终止了应用程序,单击主页按钮并在2秒内按下主页按钮,然后单击应用程序图标的' - '按钮。
我希望收到有关应用终止的通知
并且在应用程序终止时调用了要调用的函数。(是viewDidLoad吗?)
单击“ - ”按钮终止应用程序是发送应用程序SIGKILL?
答案 0 :(得分:4)
我终止了应用程序,点击主页按钮并在2秒内按下主页按钮,然后点击应用程序图标的' - '按钮。
如果按主页按钮,您的应用程序将被发送到后台。当你杀了它(通过按-
按钮)时,它可能不会收到通知,因为它不再运行了。
applicationWillTerminate
< 4.0,当没有多任务处理(后台)可用或在info.plist文件中设置UIApplicationExitsOnSuspend
时。
在iOS 4.x上,当您的应用程序发送到后台时,它会收到applicationWillEnterForeground:
。查看UIApplicationDelegate Protocol Reference了解更多信息:
您应该使用此方法释放共享资源,保存用户数据,使计时器无效,并存储足够的应用程序状态信息,以便将应用程序恢复到当前状态,以防以后终止。
请注意,如果您同时支持iOS< applicationWillEnterForeground
和applicationWillTerminate
,则需要同时执行此操作。 4
另请查看this post from S.O。
答案 1 :(得分:1)
这应该有效,您是否尝试将日志记录添加到应用程序委托方法applicationWillTerminate:
方法中?
编辑:
对于iOS 4+设备,您需要在applicationWillEnterBackground中执行任何关闭操作,而不是在您被暂停时调用它,并且是正确的时间进行最终工作。
答案 2 :(得分:0)
你应该实施applicationDidEnterBackground
并做好终止准备。如果您的应用在后台终止,则不会收到任何其他通知。