应用程序终止时执行活动

时间:2016-12-15 19:51:49

标签: ios objective-c uiview

我是iOS开发的新手,所以请原谅我提前提出这个问题。

我试图通过API发布一些数据(在特定时间之后,比方说30分钟),当应用程序处于前台或后台时,我能够实现这一点但是即使应用程序是终止了?我可以通过这段代码在App处于后台时执行此活动

UIApplication *app = [UIApplication sharedApplication];
UIBackgroundTaskIdentifier bgTask;
bgTask = [app beginBackgroundTaskWithExpirationHandler:^{
    [app endBackgroundTask:bgTask];
}];

但是一旦应用程序被终止,一切都会停止。我发现iOS应用程序的线程在终止3分钟后就会被杀死。

在间隔

之后呈现UIView

如果可以进行上述操作,那么即使应用程序终止,也可以在特定时间后在屏幕上显示特定UIView的动画。 提前致谢。

2 个答案:

答案 0 :(得分:1)

当您的应用终止时,它无法执行任何代码;如果被调用,您可以在applicationWillTerminate中执行一些代码,因为应用终止。在许多情况下,它不会成为。

在iOS上,如果您的应用被暂停,则无法在特定时间或特定时间间隔后执行代码。

您可以安排本地通知以提示您的用户返回您的应用,但如果他们没有点击通知或从其图标中启动您的应用作为响应,那么您将无法执行任何代码。

答案 1 :(得分:0)

查看applicationWillTerminate:协议hereUIApplicationDelegate方法。一旦系统决定关闭您的应用程序,就会调用此方法,让您可以在应用程序完成之前完成应用程序需要执行的所有操作。这可以根据需要将API数据发布到您的服务器。

请注意,根据文档,当用户按下主页按钮时,不保证会调用此方法,但仅在系统决定终止该应用程序时才会调用此方法:

  

对于支持后台执行的应用程序,当用户退出应用程序时通常不会调用此方法,因为在这种情况下应用程序只是移动到后台。

如果您不了解Cocoa编程中Delegates的概念,请将它们视为一个实例对象(MVC设计模式中的控制器)之间的特殊连接。您的应用程序(它必须是应用程序的代理人)和您的应用程序本身。该应用程序将告诉您的控制器是否会发生/应用程序启动或关闭等有趣的事情。注意:这也适用于macOS编程。