2017-09-05 2 views
1

안녕하세요, 앱이 배경을 입력하면 배경이 XPC 연결이 중단되는 것을 알게됩니다.Runloop이 항상 XPC 연결을 중단 시켰습니까?

예를 들어, BLE 장치에 내 앱 연결, 사용자가 잠시 동안 배경을 입력하도록하면 앱을 종료합니다. 연결 여기

을 해제보다 것은 내가 발견, 내 코드

func applicationDidEnterBackground(_ application: UIApplication) { 
     isInBackground = true 
     timer = Timer.scheduledTimer(timeInterval: 300 , target: self, selector: #selector(self.quitApp), userInfo: nil, repeats: false) 
     RunLoop.current.add(timer, forMode: .commonModes) 
     RunLoop.current.run() 
    } 

func quitApp() { 
    if isInBackground == true { 
     print("QUIT APP") 
     exit(0) 
    } 
} 

func applicationWillEnterForeground(_ application: UIApplication) { 
     timer.invalidate() 
     isInBackground = false 
} 

하지만 전경을 입력 할 때마다입니다 나는

func applicationDidEnterBackground 
에 runloop을 제거하는 경우 16,

응용 프로그램은

func applicationDidBecomeActive 
or 
func applicationWillEnterForeground 

를 실행하지만이 Runloop를 추가하는 경우, 그것은 XPC 연결이 Runloop 및 응용 프로그램 수명 사이의 관계는 무엇

내가 이해하지 못하는 중단

의 원인이됩니다 주기 ???

또한 앱이 배경을 충분히 입력하도록하면 앱을 종료해도 앱을 다시 열지 않아도됩니다.

답변

0

XPC는 실행 루프를 사용하여 구현되므로 실행 루프를 함부로 변경하면 XPC 연결이 중단된다는 것은 그리 놀라운 일이 아닙니다.

+0

고마워요! 아마 나는 runloop 사용을 피할 필요가있다. –

관련 문제