1️⃣ Android App 구성요소

- 4대 컴포넌트 : 액티비티, 서비스, 컨텐츠 프로바이더, 브로드캐스트 리시버

- 액티비티 : 앱의 기본 실행 단위

- 서비스 : 백그라운드 작업을 위한 컴포넌트

- 브로드캐스트 리시버 : 안드로이드 시스템 또는 다른 앱에서 전달하는 메시지 수신

- 컨텐츠 프로바이더 : 앱 간의 데이터 공유를 목적으로 사용하는 컴포넌트

- 프래그먼트 : 액티비티처럼 사용할 수 있는 뷰

- 인텐트 : 앱 구성 요소 사이에서 작업을 요청하는 메시지 객체

📜액티비티 (Activity)

- 앱의 기본 실행 단위로, 화면에 뿌려질 내용(뷰)과 수행할 작업을 정의

- 하나의 액티비티 : Activity.class + layout.xml

- 액티비티 상태

> 활성 상태(activity running) : 현재 액티비티가 화면을 점유하고 출력중인 상태

> 일시정지 상태(pause) : 현재 액티비티가 일시적으로 사용 불가능한 상태

> 비활성 상태(stop) : 현재 액티비티가 다른 액티비티에 완벽히 가려진 상태

메서드설명
onCreate()액티비티 생성 시 호출, 화면에 보이는 뷰의 일반적인 상태를 설정
onStart()액티비티가 사용자에게 표시되기 직전에 호출
onResume()액티비티가 사용자와 상호작용 하기 전에 호출
onPause()시스템이 다른 액티비티를 재개하지 직전에 호출
onStop()액티비티가 더이상 사용자에게 표시되지 않을 때 호출
onDestroy()액티비티 소멸 전에 호출(마지막 호출)
📜액티비티 Flow

img

img

📜프래그먼트

- 액티비티처럼 이용할 수 있는 뷰

- 한 화면에 여러 화면 구성 시 개별 액티비티 클래스의 복잡성을 줄여줄 수 있음

- 여러개의 프래그먼트를 하나의 액티비티에 조합해 창이 여러 개인 UI 구성 가능

- 하나의 프래그먼트 : Fragment.class + layout.xml

- Fragment, ListFragment, PreferenceFragment, DialogFragment 등

📜프래그먼트와 액티비티의 관계

img

📜서비스

- 백그라운드에서 실행되는 프로세스로, 별도의 사용자 인터페이스 제공 X

- 화면과 상관 없이 장시간 처리해야 하는 작업 구현에 적합

(ex. 메신저, 음악 플레이어 등)

- 하나의 서비스 : Service.class

- 서비스 구동 방법

> startService() : 어플리케이션 구성 요소가 startService() 호출 시 동작(위엄)

> bindService() : 어플리케이션 구성요소가 bindService() 호출 후 바인드 되면 동작 (상호작용)

메서드설명
onCreate()서비스 최초 생성 시 수행 (설정 절차)
onStartCommand()startService() 호출 시 동작하는 함수
onBind()bindService() 호출 시 동작하는 함수
onDestroy()서비스 소멸 시 동작하는 함수
📜서비스 생명 주기

img

📜브로드캐스트 리시버

- 안드로이드 시스템 또는 다른 앱의 브로드캐스트 메시지를 송수신하는 기능을 의미

- 이벤트 모델로 수행되는 컴포넌트 = 없으면 말고, 있으면 모두 실행

- 전화 수신, 배터리 부족, 문자 수신, 와이파이 발견, 블루투스 연결 등

- 수신 방법

> manifest 이용 : manifest에 인텐트 등록 -> Receiver 클래스 / onReceive()

> context 이용 : 새로운 Receive 클래스 인스턴스 -> IntenFilter 등록

📜컨텐츠 프로바이더 (Content Provider)

- 앱 간의 데이터 공유를 목적으로 사용하는 컴포넌트

- 일반적으로는 다른 앱의 데이터에 외부 앱이 접근 할 수 없음

- 주소록, 사진첩, 메모 읽어오기 (URI 기반)

- 안드로이드에서 제공하는 URI에는 권한이 필요한 항목과 필요하지 않은 항목들이 있음

img

📜인텐트

- 앱 구성 요소 사이에서 작업을 요청하는 메시지 객체

- 인텐트 유형

> 명시적 인텐트 : 시작할 구성요소를 명시적으로 지정하는 것

> 암시적 인텐트 : 특정 구성요소를 지정하지 않고, 수행할 작업을 지정하면 해당 작업을 처리할 수 있는 구성요소가 선택되어 작업을 수행 (전화걸기, 지도에 현재 위치 표시 등)

img

📜빌드 프로세스

- 컴파일러는 소스 코드를 DEX 파일로 변환하고 그 외 모든 것을 리소스로 변환

- APK 관리자는 DEX 파일과 리소스를 단일 APK에 결합

- APK 생성

> 디버그 : 스튜디오 자동 구성

> 릴리즈 : 개발자 서명 필요

img

📜안드로이드 앱 프로젝트 구성요소

- Manifests

> AndroidManifest.xml

> 앱 구성 요소 및 권한 정보를 정의

- java

> 자바 소스파일이 들어있는 폴더

> 패키지명과 동일한 하위 폴더들이 만들어짐

- res

> 리소스 파일이 들어있는 폴더

> XML 레이아웃, 그림, 문자열을 정의한 XML

img

📜gradle

- 빌드 배포 도구

- 안드로이드 스튜디오와 빌드 시스템은 독립 관계

- 안드로이드 스튜디오는 코드 편집만, gradle이 빌드

- build.gradle

> 모듈의 빌드 방법을 정의한 스크립트

> 빌드에 사용할 SDK버전, 사용 라이브러리 등

- setting.gradle

> 앱 빌드 시 포함할 모듈을 정의