💡 프로세스에 대한 지식이 부족하다면 [이 글]을 참고
얼마 전 안드로이드 개발자 커뮤니티에 다음과 질문이 들어왔다.
"여러 앱을 사용하는 것은 여러 프로세스를 사용하고 있다는 것과 같나요?"
답은 "아니오"였다.
설명
현재 어플리케이션에서 실행되고 있는 컴포넌트가 없을 때, 어플리케이션 컴포넌트가 시작되면 안드로이드 시스템에서는하나의 스레드로 구성된 프로세스를 시작시킨다.
기본적으로 같은 어플리케이션 내에 있는 모든 컴포넌트는 동일한 프로세스,"메인 스레드"에서 동작한다.
어플리케이션 컴포넌트가 시작할 때, 어플리케이션에서 이미 프로세스가 존재하고 있다면 새로 시작한 컴포넌트는 그 프로세스에서 실행된다.
하지만 어플리케이션에 존재하는 여러 컴포넌트들이 서로 다른 프로세스에서 동작하도록 재배치할 수도 있고, 프로세스에 다른 스레드도 생성할 수 있다.
그러므로 "여러 앱 사용 = 여러 프로세스 사용"이라는 말은 틀리고, "보통은 1개의 앱당 1개의 프로세스를 사용하지만 여러 개의 프로세스를 사용할 수도 있다"가 맞다고 생각한다.
💡 매니페스트에서 android:process 라는 속성을 통해서 컴포넌트가 동작할 프로세스를 명시할 수도 있다.