컴포넌트를 기반으로 한 개발
컴포넌트(component): 애플리케이션의 구성 요소. 안드로이드에서는 클래스로 컴포넌트를 개발한다.
컴포넌트 클래스와 일반 클래스의 차이
- 생명 주기를 개발자 코드가 관리한다면 일반 클래스이다.(개발자가 임의의 목적으로 만든 클래스)
- 생명 주기를 안드로이드 시스템이 관리한다면 컴포넌트 클래스이다.
컴포넌트의 종류
- 액티비티: 화면을 구성하는 컴포넌트. 액티비티를 통해 화면을 출력한다.
- 서비스: 백그라운드 작업을 하는 컴포넌트. 화면 출력 기능은 없지만 백그라운드에서 장시간 작업을 할 때 사용한다.
- 콘텐츠 프로바이더: 앱의 데이터를 공유하는 컴포넌트. 카카오톡 앱에서 프로필 사진을 접근할 때 콘텐츠 프로바이더를 통해 사진 데이터에 접근할 수 있다.
- 브로드캐스트 리시버: 시스템 이벤트 발생시 실행되는 컴포넌트(배터리 방전, 부팅 완료등)
안드로이드에서 컴포넌트의 작동 방식
컴포넌트는 애플리케이션 안에서 독립된 실행 단위이다.
컴포넌트는 애플리케이션 안에서 독립된 실행 단위이다. 이는 컴포넌트들끼리 서로 연관을 가지고 움직이는 것이 아니라 컴포넌트 각자가 따로 작동된다는 것이다. 그렇기에 컴포넌트들끼리는 서로 작업을 지시할 수 없다. 컴포넌트를 실행하고 싶으면 안드로이드 시스템을 통해 요청을 해야 한다. 예를 들어 카카오톡 친구 목록에서 대화방을 만들때 친구 목록 컴포넌트가 직접 대화방을 만드는 것이 아니라 친구 목록에서 안드로이드 시스템에 친구랑 대화 방 생성에 대한 요청을 하면 안드로이드 시스템이 컴포넌트를 실행하는 방식이다.
앱의 실행 시점은 다양한다.
이런 형식이 불편하기도 하지만 때로는 이점이 되기도 한다. 우리가 대화방을 목록을 통해서만 접근할 수 있다면 대화방을 만들 땐 무조건 목록을 거쳐야 한다. 하지만 서로 독립적으로 움직이면 알림이 왔을 때 그걸 누르면 대화방으로 가는 것처럼 다른 요인에 종속되지 않고 자율적으로 움직일 수 있다. 그렇기에 앱은 시작이 존재하지 않는다. 일반적인 프로그램은 프로그램을 실행 시켰을 때 프로그램이 시작하지만 앱은 메세지가 와서 누르면 시작, 인터넷에서 카카오로 들어가는 주소를 누르면 시작등 시작 시점이 다양하기에 일반적인 프로그램처럼 main 함수의 개념이 없다.
애플리케이션 라이브러리를 사용할 수 있다.
애플리케이션 라이브러리는 다른 앱을 라이브러리처럼 사용하는 것이다. 카카오톡에서 바로 카메라로 넘어가는 형식이 그 예이다. 이도 컴포넌트가 서로 독립적이고 시점이 다양하기 때문에 서로 다른 것들을 고려하지 않고 필요할 때 적절하게 사용할 수 있다.
리소스를 활용한 개발
리소스는 코드에서 따로 분리된 정적인 값을 말한다. 사진이나 글들은 앱 실행할 때 사용자의 반응에 따라 바뀌지 않는 것이 대부분이다. 이런한 것들을 따로 분리하여 리소스로 정하고 필요할 때 마다 꺼내쓰는 형식이 코드를 매번 작성하는 것보다는 효율적일 것이다. 특정한 리소스를 제외하고는 대부분 XML파일로 작성한다.
'안드로이드' 카테고리의 다른 글
안드로이드 로드맵 (0) | 2022.07.15 |
---|---|
chronometer에 대한 궁금증 (0) | 2022.07.13 |
앱을 구성하는 파일을 알아보자 (0) | 2022.01.31 |
안드로이드란? (0) | 2022.01.27 |
안드로이드 프로젝트 생성 (0) | 2022.01.27 |