모바일 개발 · 심화
Android 8.0 (Oreo) 이후 강화된 백그라운드 실행 제한 사항들을 설명하고, 이러한 제약 하에서 안정적이고 효율적인 백그라운드 작업을 구현하기 위한 Jetpack WorkManager 활용 전략을 제시해 보세요.
힌트 · Implicit Broadcast 제한, 백그라운드 서비스 제한 등을 언급하고, WorkManager의 제약 조건, 지연 실행, 네트워크 조건 등을 활용하는 방법을 설명합니다.
백그라운드 실행 제한Doze 모드App Standby 버킷JobSchedulerWorkManager
모범답안
Android 8.0 (Oreo)부터 백그라운드 실행에 대한 제약이 크게 강화되었습니다. 암시적 브로드캐스트 수신이 제한되고, 백그라운드 서비스 실행도 어려워졌죠. Doze 모드나 앱 대기 버킷 같은 배터리 관리 기능도 백그라운드 작업에 영향을 미칩니다.
이러한 제약 하에서 안정적인 백그라운드 작업을 구현하기 위해 Jetpack WorkManager를 적극적으로 활용할 수 있습니다. WorkManager는 JobScheduler를 기반으로 동작하며, 제약 조건(Constraints)을 설정하여 특정 조건(네트워크 연결, 충전 상태 등)이 만족될 때 작업을 실행하도록 할 수 있습니다.
예를 들어, 네트워크 연결이 필요하고, 기기가 충전 중일 때만 데이터를 동기화하는 작업을 WorkManager로 예약할 수 있습니다. 또한, 작업이 실패했을 경우 재시도 정책을 설정하여 안정성을 높일 수 있습니다. WorkManager는 OS 버전에 따라 최적의 방식으로 작업을 처리해주므로 개발자는 백그라운드 작업 관리에 더욱 집중할 수 있습니다.
읽었다면, 이제 직접 답해볼 차례예요
패스잇 앱에서 이 질문에 말로 답하면 AI가 꼬리질문까지 이어가며 1:1 코칭합니다.
함께 보는 Android / Kotlin 면접 질문
- Android Jetpack Navigation Component를 사용하여 앱 내 화면 간 이동을 구현할 때의 장점은 무엇이며, NavController, NavGraph, NavHostFragment가 각각 어떤 역할을 하는지 설명해주세요.
- Jetpack Compose에서 Recomposition의 동작 원리를 설명하고, 불필요한 Recomposition을 최소화하여 Compose UI 성능을 최적화하는 구체적인 전략들을 제시해 보세요.
- 대규모 안드로이드 프로젝트에서 멀티 모듈 아키텍처를 도입할 때의 장점과 단점을 설명하고, 모듈 간의 의존성 관리 및 순환 의존성 문제를 해결하는 방안에 대해 논의해 보세요.
- 코루틴의 Dispatchers 종류와 각 Dispatcher의 역할에 대해 설명하고, CoroutineScope를 올바르게 사용하여 메모리 누수를 방지하고 코루틴 생명주기를 관리하는 방법에 대해 구체적인 예시와 함께 설명해 주세요.
- Dagger 또는 Hilt에서 컴포넌트(Component)의 계층 구조가 필요한 이유와 이를 어떻게 설계하고 사용하는지 설명하고, 특정 스코프(예: @Singleton, @ActivityScoped)가 컴포넌트 계층 구조와 어떤 관계를 가지는지 설명해 보세요.
- 안드로이드 앱의 콜드 스타트(Cold Start) 프로세스를 설명하고, 콜드 스타임(Cold Start Time)을 효과적으로 줄이기 위한 구체적인 최적화 방안들을 제시해 보세요.