Ad Clicks : Ad Views : Ad Clicks : Ad Views : Ad Clicks : Ad Views : Ad Clicks : Ad Views : Ad Clicks : Ad Views : Ad Clicks : Ad Views : Ad Clicks : Ad Views : Ad Clicks : Ad Views : Ad Clicks : Ad Views : Ad Clicks : Ad Views : Ad Clicks : Ad Views : Ad Clicks : Ad Views : Ad Clicks : Ad Views : Ad Clicks : Ad Views : Ad Clicks : Ad Views : Ad Clicks : Ad Views : Ad Clicks : Ad Views :

[iOS] Background Task

/
/
/
373 Views

왜 백그라운드 작업이 필요할까?

만약,  임의의 다운로드 혹은 업로드 작업을 하고 있는 도중 홈버튼을 터치하여 백그라운드 상태로 가게 되면 실행하고 있는 작업이 강제로 캔슬이 된다. 이에 대한 것은 사용자에게는 안 좋은 경험을 하게 되고, 앱 프로세스에 많은 영향이 있을 것이다.

App Life Cycle

백그라운드 작업을 하기 위해서는 우선 앱 라이프 사이클에 대해서 이해가 선행 되어야 한다.

 

UIKit 앱의 실행 상태는 크게 4가지로 나눌 수 있습니다.

  1. Not Running
  2. Foreground (Inactive, Active)
  3. Background
  4. Suspend

App Life Cycle

 

사용자가 홈 버튼을 터치하거나, 다른 앱으로 전환하게 되면 Background 상태를 거쳐 iOS에 의해  Suspended 상태로 전환된다. Suspended 가 되기 전 하고 있는 작업이 중단되고 현재 상태를 스냅샷을 찍는다.

Suspended 상태를 일정시간 보류할 수 있도록 만들어준 것이 Backgroud Task 다. 이 시간을 이용하여 진행중인 서버 통신이나 비동기 작업을 할 수 있다. 보류할 수 있는 일정 시간은 애플에 의해 변동된다. 초기 10분에서 현재는 3분으로 제한되어 있다.

Background Task 사용법


Background Task는 UIApplication의 beginBackgroundTask(expirationHandler:) 메서드를 통해 시작할 수 있다. 이 메서드는 새 백그라운드 작업의 고유 식별자를 리턴하고 일정시간이 지나면 expirationHandler 클로저가 실행됩니다.

expirationHandler 클로져는 백그라운드 작업을 마무리하고, endBackgroundTask() 메서드로 명시적으로 백그라운드 작업을 종료해야한다. 만약 백그라운드 작업을 종료하지 않을때에는 강제적으로 앱이 종료될 수 있다.


backgroundTimeRemaining프로퍼티로 백그라운드 상태에서 작업을 수행할 수 있는 남은 할당시간을 확인할 수 있다. 위 예제는 남은 할당시간이 총 180초에서 79초를 남기고 백그라운드 작업을 종료 하는 것을 확인할 수 있다.

 

Note.

App Extenstion 에서 추가 실행 시간을 요청하려면 beginBackgroundTask 메서드를 사용할 수 없고, performExpiringActivity(withReason:using:) 메서드를 사용해야한다.

Leave a Comment

이메일은 공개되지 않습니다.

This div height required for enabling the sticky sidebar