Notice
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 플러터 설치 2022
- 멤버변수
- 안드로이드 os 구조
- 서비스 쓰레드 차이
- 스택 자바 코드
- 안드로이드 라이선스 종류
- 안드로이드 유닛 테스트 예시
- 서비스 vs 쓰레드
- 안드로이드 레트로핏 사용법
- 스택 큐 차이
- 자바 다형성
- rxjava disposable
- 안드로이드 레트로핏 crud
- 객체
- 안드로이드 라이선스
- rxjava cold observable
- android ar 개발
- 클래스
- rxjava hot observable
- android retrofit login
- 2022 플러터 설치
- 큐 자바 코드
- Rxjava Observable
- jvm이란
- 2022 플러터 안드로이드 스튜디오
- 안드로이드 유닛 테스트
- jvm 작동 원리
- 안드로이드 유닛테스트란
- ANR이란
- ar vr 차이
Archives
- Today
- Total
나만을 위한 블로그
[Manifest-Android] 33. 앱 프로세스, 안드 OS의 관리 방법 본문
728x90
반응형
프로세스 작동 방식
앱이 시작되면 OS는 리눅스 fork() 시스템 함수를 호출해 해당 앱을 위한 새 프로세스를 만든다. 각 프로세스는 달빅 또는 ART 가상 머신의 고유 인스턴스에서 실행돼 안전하고 독립적인 실행을 보장한다.
안드로이드는 각 프로세스에 고유한 리눅스 사용자 id(UID)를 할당해 권한 제어, 파일 시스템 격리를 포함한 엄격한 보안 경계를 적용한다.
앱 컴포넌트와 프로세스 연결
기본적으로 앱의 모든 컴포넌트는 같은 프로세스 안에서 실행되며 대부분의 앱은 이 표준을 따른다.
개발자는 매니페스트의 android:process 속성을 써서 프로세스 할당을 커스텀 가능하다. 해당 속성은 액티비티, 서비스, 리시버, 프로바이더 같은 컴포넌트에 적용될 수 있어 컴포넌트가 별도 프로세스에서 실행되거나 선택적으로 프로세스를 공유할 수 있게 한다.
application 요소도 이 속성을 지원해서 모든 컴포넌트의 기본 프로세스를 정의한다.
프로세스, 앱 생명주기
안드로이드는 앱 현재 상태를 기반으로 프로세스, 앱 생명주기를 관리하고 엄격한 우선순위 계층을 따른다
- 포그라운드 프로세스(Foreground Process) : 사용자와 활발하게 상호 작용하며 실행 중인 프로세스. 가장 높은 우선순위의 프로세스이며 거의 종료되지 않음
- 보이는 프로세스(Visible Process) : 사용자에게 보이지만 활발하게 상호 작용하지 않는 프로세스 (가령 다이얼로그 뒤의 Activity)
- 서비스 프로세스(Service Process) : 데이터 동기화나 음악 재생과 같은 작업을 수행하는 백그라운드 Service를 실행하는 프로세스
- 캐시된 프로세스(Cached Process) : 더 빠른 재실행을 위해 메모리에 유지되는 유휴 프로세스. 캐시된 프로세스는 우선순위가 가장 낮으며 메모리가 부족할 때 가장 먼저 종료됨
안드로이드는 메모리를 확보하고 시스템 안정성을 유지하기 위해 우선순위가 낮은 프로세스를 자동 종료한다
반응형
'스터디' 카테고리의 다른 글
[Manifest-Android] 35. View 생명주기 (0) | 2025.07.22 |
---|---|
[Manifest-Android] 34. 4대 컴포넌트가 4대 컴포넌트로 불리는 이유 (0) | 2025.07.22 |
[Manifest-Android] 32. 앱 용량 줄이기 (0) | 2025.07.22 |
[Manifest-Android] 31. R8 최적화 (0) | 2025.07.22 |
[Manifest-Android] 30. APK vs AAB (0) | 2025.07.16 |
Comments