notes
Android·iOS - Background 작업
WorkManager와 BGTask, 포그라운드 서비스 경계를 정리.
“서버에 이미지 업로드 좀 백그라운드로”가 포그라운드 서비스·배터리 최적화에 부딪혔다. 플랫폼이 허용하는 백그라운드 종류를 먼저 고른다.
Android WorkManager
지연 가능·보장 필요 작업(동기화, 로그 업로드).
val req = OneTimeWorkRequestBuilder<UploadWorker>()
.setConstraints(Constraints.Builder().setRequiredNetworkType(NetworkType.CONNECTED).build())
.build()
WorkManager.getInstance(context).enqueue(req)
당장 사용자에게 보이는 긴 작업은 Foreground Service + 알림.
iOS
백그라운드 시간은 짧다. BGAppRefreshTask / BGProcessingTask 등록, Info.plist mode 선언.
BGTaskScheduler.shared.register(forTaskWithIdentifier: "com.example.refresh", using: nil) { task in
// 작업 후 task.setTaskCompleted(success:)
}
업로드 이어가기는 URLSession background configuration.
공통 감각
OS가 언제든 죽인다. 멱등·재시도·진행 상태 저장을 전제로 짠다. “무한 백그라운드 소켓”은 모바일에서 기대하지 말 것.