我在applicationWillTerminate中执行此操作,但警报未显示,只会打印日志。
- (void)applicationWillTerminate:(UIApplication *)application {
NSLog(@"Went to Background");
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Error" message:@"app is terminated " delegate:self cancelButtonTitle:@"Ok" otherButtonTitles:nil, nil];
[alert show];
}
答案 0 :(得分:1)
你不能这样做。它是iOS应用程序的设计方式,您无法阻止用户关闭您的应用程序。 从this回答:
警告视图永远不会显示,因为'显示'方法没有 阻止,因此,应用程序的结束将终止'到达了 创建警报视图后立即尝试显示它。一世 相信这是设计的。你无法真正开始异步 在' applicationWillTerminate'。
中的操作
答案 1 :(得分:1)
简而言之,除非您在Info.plist中将UIApplicationExitsOnSuspend设置为YES,否则在iOS4及更高版本中无法保证applicationWillTerminate:将被调用。
正如文件所说:
对于支持后台执行的应用程序,此方法是 通常在用户退出应用程序时不会调用,因为 在这种情况下,应用程序只是移动到后台。但是,这个 可以在运行应用程序的情况下调用方法 后台(未暂停),系统需要终止它 由于某种原因
(强调我的。)
如果您需要在应用程序退出之前执行某些操作,则需要在applicationDidEnterBackground中执行此操作:没有办法抓住SIGKILL。
答案 2 :(得分:-1)
您可以在几秒钟后安排本地通知。这将显示给用户。