본문 바로가기

gyub's 공부일기/그저 내 공부

[Android] 프로세스

안드로이드를 공부하던 중

"여러 프로세스를 사용하고 있다 " = "여러 앱을 사용하고 있다" 일까?

라는 궁금증과 함께 공부하게 되었다.

 

말로만 프로세스 프로세스 거렸지 내가 알고있던 지식은 참 얕았다.

 

위의 질문에 대한 답변은 "아니오"이다.

 

현재 어플리케이션에서 실행되고 있는 컴포넌트가 없을 때, 어플리케이션 컴포넌트가 시작되면 안드로이드 시스템에서는 하나의 스레드로 구성된 프로세스를 시작시킵니다.

 

기본적으로 같은 어플리케이션 내에 있는 모든 컴포넌트는 동일한 프로세스, 즉 "메인 스레드"에서 동작한다.

 

어플리케이션 컴포넌트가 시작할 때, 애플리케이션에서 이미 프로세스가 존재하고 있다면 새로 시작한 컴포넌트는 그 프로세스에서 실행된다.

하지만 어플리케이션에 존재하는 여러 컴포넌트들이 서로 다른 프로세스에서 동작하도록 재배치할 수도 있고, 프로세스에 다른 스레드도 생성할 수 있다.

 

그러므로 "여러 프로세스를 사용하고 있다 " = "여러 앱을 사용하고 있다" 가 아닌,

"보통은 1개의 앱당 1개의 프로세스를 사용하지만 여러 개의 프로세스를 사용할 수도 있다"가 맞다.

 

매니페스트에서 android:process 라는 속성을 통해서 컴포넌트가 동작할 프로세스를 명시할 수도 있다.

이 속성값으로 일부 컴포넌트는 프로세스를 공유하지만 다른 컴포넌트들은 프로세스를 공유하지 않게 만들 수 있고, 서로 다른 애플리케이션에 있는 컴포넌트들을 동일한 프로세스에서 실행되게 할 수 있다.

 

반응형

'gyub's 공부일기 > 그저 내 공부' 카테고리의 다른 글

[Android] 프로세스 라이프사이클  (0) 2022.03.20
[OS] 메모리 페이징  (0) 2022.03.19
배열 vs 리스트  (0) 2022.02.14
Synchronized  (0) 2021.04.08
Serialization  (0) 2021.04.08