ActivityTaskManagerService: Android 앱 활동 관리의 핵심 서비스
카테고리
프로그래밍/소프트웨어 개발
서브카테고리
개발 툴
대상자
- 대상: Android 앱 개발자, 시스템 엔지니어
- 난이도: 중간 (Android 시스템 내부 동작 및 생명주기 관리 이해 필요)
핵심 요약
- ActivityTaskManagerService (ATMS)는 Android의
system_server
프로세스에서 실행되며, 활동 생명주기 관리, 자원 최적화, 보안 제어를 담당하는 핵심 서비스 - Binder IPC를 통해 시스템과 앱 간 통신을 처리하며,
ActivityStarter
와 협력해startActivity()
호출을 관리 - 성능 최적화 팁:
onCreate()
는 가볍게 작성,onPause()
는 비동기 처리,onStop()
/onDestroy()
에서 리소스 정리,dumpsys activity
로 문제 분석
섹션별 세부 요약
1. ATMS의 역할과 위치
- system_server 프로세스에 위치해 있으며,
ActivityManagerService
의 하위 컴포넌트 ActivityRecord
를 통해 활동 상태(RESUMED
,PAUSED
,STOPPED
,DESTROYED
)를 추적하고,ActivityTaskSupervisor
와 협력해 전환 관리- 예제: iFood 앱의
HomeActivity
생명주기 로그를 통해 ATMS의 활동 상태 전환을 확인 가능
2. startActivity()의 처리 흐름
startActivityAsUser()
메서드를 통해Intent
를 처리,ActivityStarter
에 위임- Binder IPC를 통해
ApplicationThread
로 메시지 전달, 앱의onCreate()
/onResume()
호출 - 권한 검증, Sandbox 검사, 사용자 ID 확인 등의 안전성 검증 포함
3. 보안 및 성능 최적화
- BackgroundActivityStartController로 백그라운드 앱의 활동 시작 제어, 보안 강화
- 화면 회전, 언어 변경 등 시스템 이벤트에 대응해 활동 재생성
ActivityMetricsLogger
를 통해 cold/warm start 시간 측정,dumpsys activity
로 상태 분석
4. 개발자 가이드라인
onCreate()
는 가벼운 로직만 포함, 복잡한 레이아웃/데이터 로딩은 지양onPause()
는 비동기 작업 수행,onStop()
/onDestroy()
에서 리스너/센서 해제- Android Studio Profiler로 런칭 시간 모니터링,
dumpsys activity
로 내부 상태 분석
결론
- ATMS를 이해하면 앱의 성능, 안정성, 보안을 극대화할 수 있음
- 핵심 실무 팁:
onCreate()
최적화,dumpsys activity
활용, Android Profiler로 성능 분석 ActivityTaskManagerService
의 구현 방식은 Android 12 이상에서com.android.server.wm
패키지의ActivityTaskManagerService
클래스를 참조 가능