• 왜 백그라운드 작업이 원하는 대로 안되나요?
  • 앱의 목표: 최신 컨텐츠를 즉시 보여주기
  • 시스템의 목표
    • 배터리 효율
    • 성능
    • 프라이버시(사용자 동의 없이 실행되면 안된다)
    • 사용자의 의도를 파악하는 것
  • 런타임에 영향을 미치는 요소들이 많다.
    • 배터리 잔량 적음
    • 저전력 모드
    • 디바이스 온도
    • 앱 스위처
    • 백그라운드 앱 리프레쉬
    • 아이클라우드 복원
    • 시스템 자원
    • 사용량 제한
    • 세팅
    • 카메라 사용
    • 디스플레이 켜짐/꺼짐
    • 앱 사용 패턴
    • 디바이스 잠금 여부
    • 비행기 모드
  • 그 중 7가지 가장 중요한 요인
    • 배터리 잔량 적음: 시스템이 배터리를 아끼려고 하면, 꼭 필요한 작업만 한다.
    • 저전력 모드: 배터리 적을 때랑 같으나, 사용자가 의도적으로 킨다는 점이 다름
      • 프로그램에서 확인 가능(플래그, 노티)
    • 앱 사용량
    • 앱 스위처
    • 백그라운드 리프레시 모드
      • 프로그램에서 확인 가능(플래그, 노티)
    • 시스템 자원
    • 사용량 제한
  • 백그라운드 리프레시
    • 유저가 앱을 포어그라운드로 실행하기 전까지, 백그라운드에서 데이터를 리프레시 하는 것
    • 쓸데없이 하드웨어에 접근하거나, 무거운 연산 금지
    • 종료 콜백을 반드시 호출할 것
    • 네트워크 통신은 100kb 이하로
  • 백그라운드 태스크