2016-10-02 46 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 
     } 

} 
相關問題