2016-10-02 61 views
0

我需要为应用程序终止前应执行的应用程序(在Swift中)编写一些代码。它在appDelegate中使用appWillTerminate时不起作用,但它不在后台,但我需要它在后台或前台终止时运行代码。我该怎么做 ??在后台快速终止应用程序

+0

你需要执行哪些代码?如果你只是想保存数据,这可以通过其他方式来完成。 –

+0

appWillTerminate:如果应用程序在后台并且无法调用它,则不会调用它。我会建议在applicationDidEnterBackground中编写代码:因为之后没有办法调用appWillTerminate。但是,它又一次削弱了你想要完成的事情。如果是关于保存数据比applicationDidEnterBackground是要走的路。 – Netra

回答

0

下面的策略可能会起作用,它比iOS更适合采用纯Swift语言方法:每个类都可以覆盖deinit方法。每当类需要从堆中释放时,在类被释放之前调用de-initializer。这可能发生,比如班级超出范围,并且没有更多的保留数量。当您的应用终止时,这可能会发生在您的AppDelegate

0

如果应用程序是在后台,并没有任何任务执行的,则该应用程序处于暂停。 当应用程序处于暂停状态时,终止应用程序将不会调用applicationWillTerminate。但是,您可以启动后台任务 或启用后台模式。 例如

func applicationDidEnterBackground(_ application: UIApplication) { 

     bgTask = application.beginBackgroundTask(withName: "MyTask") { 
      application.endBackgroundTask(self.bgTask!) 
      self.bgTask = UIBackgroundTaskInvalid 
     } 

} 
相关问题