applicationWillTerminate 问题
Posted
技术标签:
【中文标题】applicationWillTerminate 问题【英文标题】:applicationWillTerminate problem 【发布时间】:2011-06-06 07:18:05 【问题描述】:我想在用户单击 Iphone Home 按钮时显示 UIAlertView(表示关闭应用程序)
我已经完成了这些代码
- (void)applicationWillTerminate:(UIApplication *)application
NSString *errorString =@"Testing";
UIAlertView * errorAlert = [[UIAlertView alloc] initWithTitle:@"Alert" message:errorString delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil];
[errorAlert show];
[errorAlert release];
但是 UIAlertView 没有显示。请帮忙
提前致谢
【问题讨论】:
【参考方案1】:用户的目标是在按下主页按钮时关闭您的应用。苹果建议让他/她这样做。我想说的是:不要那样做。我认为这甚至是不可能的。
【讨论】:
但我想在用户想要关闭应用程序时显示 UIAlertView。我该怎么办? 是的,请不要这样做。作为用户,当我出于任何原因想要退出时,我会讨厌这种中断。 苹果不允许此事件您在此处键入警报代码,然后它将无法正常工作。这个方法提供给开发者在终止时保存数据或做一些重要的工作。【参考方案2】:看Problem with applicationShouldTerminate on iPhone:
永远不会显示警报视图,因为 'show' 方法不会阻塞,并且 因此,结束 'applicationWillTerminate' 已达到 创建后立即 警报视图并尝试显示它。一世 相信这是设计使然。你不能 真正开始异步操作 在“applicationWillTerminate”中。【讨论】:
但我想在用户想要关闭应用程序时显示 UIAlertView。我该怎么办? 你不能那样做!如果您需要这样做,那么 ios 可能不是您的平台。【参考方案3】:applicationWillTerminate:
在 iOS 的较新版本中按下 Home 按钮时可能不会被调用,因为应用程序可能只是进入后台模式,而不是实际终止。
不要询问用户是否想退出您的应用。这不是 iOS 的常态。而是将所有状态保存在applicationDidEnterBackground:
中,并在applicationWillEnterForeground:
和application:didFinishLaunchingWithOptions:
中恢复它们,让用户感觉好像应用从未终止过。
【讨论】:
【参考方案4】:您可能不想使用applicationWillTerminate
,而是使用applicationWillResignActive
。更多信息请查看 this one 等较早的帖子。
【讨论】:
【参考方案5】:当应用程序收到 SIGKILL(Exit) 命令时,您无法显示 uialertview。您可以在 applicationWillTerminate 中调用任何文件或后台函数 - 为此,您需要在 plist 中设置一个键。
UIApplicationExitsOnSuspend - 布尔值 - 是。
【讨论】:
以上是关于applicationWillTerminate 问题的主要内容,如果未能解决你的问题,请参考以下文章
“applicationWillTerminate”没有被迅速调用
applicationWillTerminate 何时调用,何时不调用
Swift - 在 applicationWillTerminate 中调用本地通知方法
为啥 UIWebView 不在我的应用程序委托中的 applicationWillTerminate: 处加载 NSURLRequest?