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

}