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