AI Store에서 AI코딩으로 만들어진 앱을 만나보세요!
지금 바로 방문하기

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 클래스를 참조 가능