본문 바로가기
NSLog(@"%@", dailyLog)

[Android] 안드로이드 구성 요소

by 틴디 2020. 8. 17.
728x90
반응형

* 해당 내용은 공부하면서 알게된 사실을 정리했습니다. 틀린 부분이 있거나 문제가 있다면 댓글로 알려주세요!

 

+) 메인 스레드 생성 시점 : 애플리케이션 실행 하는 순간 -> UI 요소 갱신, 변경

일반 스레드 생성 시점 : 시스템이나 사용자에 의해 이후에 생성

 

4대 요소(Component)란

- Activity

- Service 

- Broadcast Receiver

- Content Provider

그 외에 Intent, view, Fragment 등이 있음

 

액티비티(Activity)

- UI 화면을 나타냄 -> 즉 사용자가 앱을 실행 했을 때 보게 되는 인터페이스 화면 구성 요소를 가지고 있음

- 하나의 애플리케이션은 여러 액티비티를 가질 수 있음

- 액티비티의 생성은 메인 스레드이며 여기서 액티비티의 역활은 뷰를 그리는 것

- 화면 배치등을 담당하는 요소, 텍스트, 버튼 과 위젯 요소 등이 액티비티에 포함 됨

- setContentView() 함수가 xml 레이아웃 파일 코드를 통해 UI 구성

- 애플리케이션을 실행하면 현재 보이는 화면과 그렇지 않은 화면이 있음 -> 각 화면을 구성하는 액티비티는 생명 주기를 가짐

 

액티비티 생명 주기 (with 콜백 함수)

onCreate()

액티비티 생성 시 호출 되므로 초기화 관련 작업 등을 수행할 수 있음. setContentView를 통해 레이아웃을 지정하며 화면을 그리게 됨

 

onStart()

onStop() 이후 onStart(), onRestart() 이후 실행 됨

사용자가 화면에서 액티비티를 볼 수 있는 시점(visible)

 

onResume()

실재 사용자와 상호 작용이 가능한 포지션

일시 중단 이후 다시 실행할 경우 호출 됨

액티비티가 실행 중인 상태

 

onPause()

애플리케이션이 다른 것에 의해 가려진 경우 호출. 애플리케이션의 일시 중단을 나타냄.

상호작용이 불가능한 상태를 말함

 

onStopped() 

화면에서 보여지지 않음

화면에서 보여지지 않는 상태에서 호출 됨

 

onDestroy()

어떤 버튼이나 동장에 의해 화면이 뷰 위에 겹쳐지면 스택에 쌓이게 되는데 이때 백 버튼을 눌러 이전 화면으로 이동할 수 있다. 이 백 스택에 들어 있는 액티비티는 백 버튼에 의해 빠져나오면서 화면에서 사라지고 , 백 스택에 들어 이쓴 액티비티가 모두 빠져나오면 호출 되는 함수

리소스 부족하여 시스템에 의한 강제 종료에도 호출 됨. ( 만일 강제로 종료되는 경우 데이터를 잃을 수 있으므로 onSaveInstanceState(), onRestoreInstanceState()를 오버라이딩 하여 상태를 저장하고 복구 해야 함)

 

프래그먼트 (Fragment)

화면의 작은 단위이며 하나의 액티비티에 여러개의 프래그먼트를 붙일 수 있음

onAttach() 프래그먼트 붙일 때 사용

onDetach() 제거할 때 사용

onCreateView() 프로그램 실행 중간에 UI 구성하는 view를 반환

onActivityCreated() 완전하게 UI 구성한 후 실행되는 동작 코드를 이 함수에 구현 함

 

서비스(Service)

- 백그라운드에서 실행 -> 액티비티가 종료되었어도 동작 가능

- 메인 스레드에서 제어 됨

- startService(), stopService() : 서비스 시작/중단 함수

- 애플리케이션 종료 후에도 백그라운드에서 실행 가능

 

proxy

- 현재 서비스 되는 곳이 아닌 다른 위치나 메모리에 있는 경우 원격 서비스 구동 -> 중간 매개체인 proxy 서비스 이용

- AIDL : Android Interface Definition Language  정의 언어 사용

- 필요한 데이터는 Parcel 통해 전달 

- bindService(), unbindService() 사용 - 운영체제 내부에 있는 binder요소 : 다른 프로세스 간 메시지 전달 

- 프로그래밍 인터페이스 정의 -> 프로세스 간 통신 가능

- 서비스에 액세스하도록 허용하는 경우와 서비스에서 멀티스레딩을 처리하는 경우에만 사용하도록 주의 해야 함

- IPC가 필요 없다면 바인더 구현

 

서비스 생명 주기

startService()

onCreate()

onStartCommand() :  서비스 실행

stopService() : 서비스 종료 

onDestroy()

bindService() -> onBind() 콜백 함수 호출

unbindService() -> onUnbind() 콜백 함수 호출

 

방송 수신자(Broadcast Receiver)

안드로이드에서 발생하는 이벤트, 정보 전달 요소

하드웨어나 시스템 적인 요소를 알려줌( 문자 수신, 배터리 부족 등)

애플리케이션 필터를 통해 받거나 무시 가능

 

콘텐츠 제공자 (Content Provider)

데이터 관리

데이터 제공

SQLite, 파일, web 이용

URL : Uniform Resource Identifier라는 데이터 고유 이름으로 데이터를 구분하여 사용함

 

인텐트(Intent)

안드로이드 4대 요소 간에 메시지 전달

명시적 인텐트 : 특정 클래스 지정

묵시적 인텐트 : 특정 데이터에 대한 수행 액션을 지정

 

핸들러

메시지 큐

 

출처 및 인용 : 

Do it! 코틀린 프로그래밍

 

안드로이드 액티비티 생명주기(Life Cycle)

4대 컴포넌트 | 안드로이드 액티비티 생명주기 액티비티는 안드로이드 4대 컴포넌트 중에 하나이다. 그중에서도 UI와 가장 밀접한 관련을 가지고 있기 때문에 사실상 안드로이드 앱에 있어서 가�

brunch.co.kr

https://developer.android.com/guide/components/aidl?hl=ko

 

안드로이드 인터페이스 정의 언어(AIDL)  |  Android 개발자  |  Android Developers

AIDL(Android Interface Definition Language)은 전에 다뤄본 다른 IDL과 유사합니다. 클라이언트와 서비스가 모두 동의한 프로그래밍 인터페이스를 정의하여 프로세스 간 통신(IPC)으로 서로 통신하게 할 수 �

developer.android.com

 

728x90
반응형

댓글