应用程序被杀时是否可以显示警报

时间:2016-07-21 11:59:23

标签: ios objective-c uialertview uialertcontroller

我在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];
}

3 个答案:

答案 0 :(得分:1)

你不能这样做。它是iOS应用程序的设计方式,您无法阻止用户关闭您的应用程序。 从this回答:

  

警告视图永远不会显示,因为'显示'方法没有   阻止,因此,应用程序的结束将终止'到达了   创建警报视图后立即尝试显示它。一世   相信这是设计的。你无法真正开始异步   在' applicationWillTerminate'。

中的操作

答案 1 :(得分:1)

简而言之,除非您在Info.plist中将UIApplicationExitsOnSuspend设置为YES,否则在iOS4及更高版本中无法保证applicationWillTerminate:将被调用。

正如文件所说:

  

对于支持后台执行的应用程序,此方法是   通常在用户退出应用程序时不会调用,因为   在这种情况下,应用程序只是移动到后台。但是,这个   可以在运行应用程序的情况下调用方法   后台(未暂停),系统需要终止它   由于某种原因

(强调我的。)

如果您需要在应用程序退出之前执行某些操作,则需要在applicationDidEnterBackground中执行此操作:没有办法抓住SIGKILL。

答案 2 :(得分:-1)

您可以在几秒钟后安排本地通知。这将显示给用户。