안드로이드 앱을 구성하는데 필요한 4가지 요소로 다음과 같다.
각 컴포넌트는 다음과 같은 공통적인 특징을 지닌다.
인텐트가 뭔데?
메시징 객체로, 컴포넌트간의 작업 수행을 위한 정보를 전달하는 역할을 하는 통신 수단이다. 다른 앱의 컴포넌트를 활성화시키는 데 사용할 수 있다.
사용자와 상호작용하기 위한 진입점이다. 즉, 사용자에게 실제로 보이는 화면을 의미한다. 앱을 실행 할 때 앱을 전체적으로 호출하는 것이 아닌, 앱의 액티비티를 호출하는 것이다. 사용자에게 드러나는 화면을 의미하기 때문에, 적어도 하나 이상의 액티비티가 있어야 한다.
사용자와 직접 상호작용하지는 않지만, 백그라운드에서 어떠한 작업을 처리하기 위해 주로 사용한다. 애플리케이션이 종료되어도 백그라운드에서 동작한다.
안드로이드 OS로부터 발생하는 각종 이벤트와 정보를 받아 핸들링한다. 대부분 UI를 가지지 않고, 특정 이벤트에 맞게 정의한 작업들을 수행한다.
데이터를 관리하고 다른 애플리케이션의 데이터를 제공하는 데 사용된다. 특정 애플리케이션이 사용하고 있는 데이터베이스를 공유하기 위해 사용한다. 인텐트로는 작은 데이터를 공유하는 데, 컨텐츠 제공자로는 용량이 큰 데이터를 공유하는 데 사용한다.
말 그대로 안드로이드 가상 기기를 말한다. 여러가지 안드로이드 기기 및 환경을 테스트하는 데 사용된다.
왜 사용할까?
실제 안드로이드 기기가 없어도 테스트 할 수 있고, 다양한 기기와 안드로이드 버전에서 개발한 앱을 실행해 볼 수 있기 때문이다.
소프트웨어를 만들기 위한 개발 도구 모음으로, 프로그램 개발의 복잡성을 줄이는 기능 집합이다. 다른 회사에서 구현한 기능을 바로 내 애플리케이션에 사용할 수 있게 해준다. API, 라이브러리, IDE(코드 에디터), 가이드 문서 등이 포함될 수 있다. 예를 들어 안드로이드 앱 개발에는 자바(혹은 코틀린)를 포함한 SDK, iOS 개발에는 스위프트가 포함된 iOS SDK가 필요하다.
레이아웃은 여러 뷰들을 포함하고 배치하는 역할을 한다. 안드로이드에서 제공하는 레이아웃 중, 자주 쓰이는 레이아웃 다섯 가지를 알아보자.
UI를 구성하는데 사용되며, 안드로이드 앱을 실행했을 때 화면에 보이는 모든 요소를 말한다. 버튼, 입력창 등을 뷰라고 할 수 있다. 뷰는 뷰를 포함할 수 있고, 중첩적으로 사용이 가능하다. 뷰는 위젯과 레이아웃으로 구분된다.
여러 개의 뷰를 포함하고 있는 것을 뷰 그룹이라 한다. 뷰 그룹은 뷰를 상속받기 때문에 뷰의 특성을 그대로 가질 수 있다.