일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 완전탐색
- BFS
- 카카오블라인드
- BOJ
- 다이나믹프로그래밍
- 그래프
- 코딩테스트
- 코틀린
- 안드로이드
- 운영체제
- 문자열
- Android
- component
- 이분탐색
- 코딩
- 알고리즘
- 백준
- 스택
- 동적계획법
- 트리
- 세그먼트트리
- 프로그래머스
- 생명주기
- 문자열다루기
- GIT
- dfs
- 분할정복
- 배열
- activity
- 자바
- Today
- Total
HS_development_log
Android - Component 본문
Component
-
하나의 독립적인 형태로 존재합니다.
-
Intent를 통해서 상호작용합니다.
-
각 Component들은 각자 고유의 기능을 수행합니다.
1. Activity
Activity는 사용자에게 제공되는 UI가 있는 화면입니다. 한마디로 애플리케이션과 사용자가 상호작용 하는 화면을 의미합니다.
-
모든 Activity의 클래스가 AndroidManifest.xml에 해당하는 <activity> 선언을 가지고 있어야 합니다.
-
애플리케이션에는 반드시 1개 이상의 Activity가 있어야 합니다.
-
2개의 Activity를 동시에 Display 할 수 없습니다.
-
Intent를 통하여 다른 Activity와 상호작용 할 수 있습니다.
-
Activity내에서는 Fragment를 통하여 화면을 분할할 수 있습니다.
-
Activity는 UI Thread라는 동일한 Application Thread로 실행됩니다.
-
Activity는 stack에서 관리됩니다.
2. Service
Service는 사용자와 상호작용하지 않습니다. UI도 없습니다.
백그라운드, 포그라운드, 바인드에서 실행되는 프로세스입니다.
Service는 UI Thread라는 동일한 Application Thread로 실행됩니다.
※ Service는 자신의 호스팅 프로세스의 기본 스레드에서 실행됩니다. 자신의 스레드를 직접 생성하지 않으며, 별도의 프로세스에서 실행되지도 않습니다. 따라서 서비스 내에서 별도의 스레드를 생성하여 작업하는 것이 좋습니다.
2-1 Foreground Service
-
사용자에게 보이는 작업을 수행합니다.
-
알림을 표시해야 합니다.
-
사용자가 앱과 상호작용하지 않을 때도 계속 실행됩니다.
-
리소스가 부족해도 임의로 중단되지 않습니다.
2-2 Background Service
-
사용자에게 직접 보이지 않는 작업을 수행합니다.
-
시스템이 리소스가 부족할 경우 임의로 중단할 수 있습니다.
현재 API 26 이상부터 백그라운드 서비스 실행에 대한 제한이 적용되어 안정적으로 사용하기 어렵습니다.
안드로이드 개발자 문서 : https://developer.android.com/about/versions/oreo/background?hl=ko
2-3 Bound Service
-
바인딩된 서비스는 클라이언트 <-> 서버와 같이 동작하며, 서비스가 서버 역할을 수행합니다.
-
일종의 서비스 클래스 구현으로, 이를 통해 다른 애플리케이션이 이 서비스에 바인딩하여 상호작용 할 수 있습니다.
-
startService()로 시작한 경우 : 서비스를 바인딩한 뒤, 실제로 실행하면 시스템은 클라이언트가 모두 바인딩을 해제해도 서비스를 소멸시키지 않습니다. 따라서 서비스를 직접 중단해야 합니다.
-
그 외 : 모든 클라이언트가 서비스에서 바인딩을 해제하면 시스템은 서비스를 소멸시킵니다.
3. Broadcast Receiver
안드로이드 내부적으로 발생하는 각종 이벤트와 Data를 받아와 핸들링하는 컴포넌트입니다.
안드로이드 디바이스의 시스템 부팅 시 앱 초기화, 네트워크 끊김 등 특수한 이벤트에 대한 처리나 배터리 부족 알림, 문자 수신과 같은 정보를 받아 처리를 해야 할 필요가 있을 때 동작합니다.
안드로이드 OS에서 모든 앱에 정보를 방송하는 역할을 합니다.
Broadcast Receiver를 구현하면 메시지를 받을 수 있습니다.
- 거의 대부분 UI를 가지지 않습니다.
- 안드로이드 디바이스의 특수한 상황에 대응하기 위해 사용됩니다.
- 특수상 상황을 제외하고는 브로드캐스트는 시스템에서 시작됩니다.
4. Content Provider
content provider는 데이터를 관리하고 다른 애플리케이션의 데이터를 제공하는 데 사용되는 컴포넌트입니다.
특정 애플리케이션이 사용하는 DB를 공유하기 위해 사용됩니다.
애플리케이션 간의 데이터 공유를 위해 표준화된 인터페이스를 제공합니다.
- SQLite DB/ WEB / 파일 입출력 등을 통해서 데이터를 관리합니다.
- 외부 애플리케이션으로부터 자신의 DB를 접근 제한, 공유를 하고 싶은 데이터만 공유할 수 있습니다.
- 작은 데이터는 Intent로 애플리케이션끼리 데이터 공유가 가능하지만, content provider는 음악, 사진처럼 용량이 큰 데이터를 공유하는데 적합합니다.
- DB의 CREATE, READ, UPDATE, DELETE (CRUD) 원칙을 준수합니다.
'Android' 카테고리의 다른 글
Android - View , ViewGroup (0) | 2020.07.17 |
---|---|
Android - Thread (0) | 2020.07.17 |
Android - Activity Lifecycle (0) | 2020.06.29 |
Android - Fragment (0) | 2020.06.29 |
Android - Context (0) | 2020.05.24 |