안드로이드란?
안드로이드 는 휴대 전화를 비롯한 휴대용 장치를 위한 운영 체제와 미들웨어, 사용자 인터페이스 그리고 표준 응용 프로그램, 웹 브라우저, 이메일 클라이언트, 단문 메시지 서비스(SMS), MMS 등을 포함하고 있는 소프트웨어 스택이자 모바일 운영 체제이다.
안드로이드의 특징
- 공개 운영체제인 리눅스 기반이다.
- 자바 및 코틀린을 이용해 개발한다.
- 운영체제의 핵심 코드, 라이브러리 코드, 구글 앱 코드 등 대부분 코드가 오픈되어 있다.
- 안드로이드 플랫폼 기반의 스마트폰을 여러 제조업체에서 만들 수 있다.
- 개발자가 만든 앱은 구글 Play 스토어뿐만 아니라 다양한 방법으로 사용자에게 배포할 수 있다.
- 안드로이드 기반의 모든 애플리케이션은 평등하다는 사상으로 스마트폰에 기본 탑재된 앱과 개발자들이 만드는 앱이 같은 환경에서 같은 API를 이용한다.
많은 부분이 오픈되어 있다는 점은 소프트웨어 개발자 관점에서 장점일 수 있다. 일단 라이브러리 코드, 구글의 기본 앱 코드가 오픈되어 있어 앱을 개발할 때 참조할 수 있다. 또한, 오픈된 기술을 바탕으로 한 오픈소스 그룹이 활동하기 좋은 생태계이며, 그런 오픈소스 그룹에서 만든 다양한 라이브러리를 이용할 수 있다.
컴포넌트 기반 개발
안드로이드 앱의 아키텍처에서 가장 큰 특징은 "컴포넌트" 기반이라는 것이다.
컴포넌트는 앱의 구성 단위이다.
즉, 안드로이드 앱을 작성한다는 건 컴포넌트를 작성한다는 것이며,
개발자가 작성한 여러 컴포넌트를 조합하여 하나의 앱이 완성된다.
안드로이드 컴포넌트는 아래와 같이 4가지 종류가 있다.
1. 액티비티
UI를 구성하기 위한 컴포넌트
액티비티는 사용자가 애플리케이션과 상호작용하는 단일화면을 의미
즉, 사용자와 상호작용을 담당하는 인터페이스
- 인텐트를 통해 다른 애플리케이션의 액티비티를 호출할 수 있다.
- 1개 이상의 view 또는 viewGroup을 포함한다.
- 애플리케이션에는 반드시 하나 이상의 액티비티가 있어야 한다.
2. 서비스
UI 없이 백그라운드에서 장시간 수행되는 컴포넌트
백그라운드에서 어떠한 작업을 처리하기 위한 컴포넌트
이는 메인 스레드에서 동작하기에 서비스 내에서 별도의 스레드를 생성해 작업을 처리해야 한다.
- 네트워크와 연동이 가능하다.
- 별도의 ui를 가지지 않으며 백그라운드에서 수행된다.
- 애플리케이션이 종료되어도 이미 시작된 서비스는 백그라운드에서 계속 동작한다.
3. 콘텐츠 프로바이더
애플리케이션 간 데이터를 공유하기 위한 컴포넌트
안드로이드 OS로부터 발생하는 각종 이벤트와 정보를 받아와 처리하는 컴포넌트
- 거의 대부분 ui를 가지지 않는다.
- 안드로이드 디바이스의 특수한 상황을 대응하기 위해 사용된다.
4. 브로드캐스트 리시버
이벤트 모델로 수행되는 컴포넌트
데이터를 관리하고 다른 애플리케이션의 데이터를 제공하는데 사용되는 컴포넌트
- SQLite DB / WEB / 파일 입출력 등을 통해서 데이터를 관리한다.
- 외부 애플리케이션이 현재 실행 중인 애플리케이션 내에 있는 DB에 함부로 접근하지 못하게 할 수 있다.
- 음악 또는 사진 파일 등과 같이 용량이 큰 데이터를 공유하는데 적합하다. (작은 데이터는 인텐트 사용)
© 참고
'Android > study' 카테고리의 다른 글
[Android] 안드로이드 이벤트 (0) | 2021.09.07 |
---|---|
[Android] 인텐트의 정의와 종류 (+ 플래그) (0) | 2021.09.02 |
[Android] 매니페스트 파일 (AndroidManifest.xml) 분석 (0) | 2021.09.02 |
[Android] 안드로이드 레이아웃과 속성 (0) | 2021.08.08 |
[Android] 안드로이드 액티비티 생명주기와 상태 (+ 호출 예제) (0) | 2021.08.08 |