본문 바로가기
IT/Teckweek

안드로이드 액티비티 생명주기

by YEON-DU 2020. 9. 21.
반응형

안드로이드와 멀어진 지 너무 오래된 것 같아 오랜만에 정리해보는 시간을 가지려 이 주제를 선택하게 되었다..

먼저 안드로이드가 무엇인지, 그 구성요소인 컴포넌트들과 그 중 액티비티 생명 주기에 대해 다뤄보려 한다.

 

안드로이드란?

안드로이드란 간단히 말해 구글에서 만든 스마트폰용 운영체제이다.

운영체제와 미들웨어, 사용자 인터페이스, 어플리케이션, MMS 등을 포함하고 있는 소프트웨어 스택이자, 모바일 운영체제라고 할 수 있다.

안드로이드는 리눅스(Linux)를 기반으로 제작되었고 Java와 Kotlin으로 응용 프로그램을 작성할 수 있다.

 

안드로이드 4대 컴포넌트

액티비티, 서비스, 콘텐츠 제공자, 방송 수신자를 의미한다.

이것은 어플리케이션을 만들 때 주요 구성요소이며, 보통 개발 시 이들을 상속받아 정의된 함수를 오버라이딩 하여 구현하는 경우가 대부분이다. 여기에서 인텐트는 서로 독립적으로 동작하는 4가지 컴포턴트들의 상호 통신을 위한 장치이다.

 

액티비티: 사용자 인터페이스 화면을 의미한다. UI를 화면에 표시하고 사용자 터치와 같은 입력 event를 가져오는 일을 담당하는 컴포넌트이다. 

서비스: 백그라운드에서 실행되는 컴포넌트이다. 오랜 시간동안 실행되는 작업이나 원격 프로세스를 위한 작업을 할 때 사용된다. UI를 제공하지 않고, 사용자가 다른 어플리케이션으로 전환하더라도 지속적으로 실행된다. 예로는 화면이 종료되어도 지속적으로 재생되는 음악 재생 어플리케이션을 들 수 있다.

콘텐츠 제공자 : 데이터를 관리하고 다른 어플리케이션 데이터를 제공하는 컴포넌트이다. 데이터를 타 어플리케이션과 공유하고 싶지 않다면 자체 제공자를 개발하지 않아도 되지만, 어플리케이션 내에서 사용자 지정 검색 제안을 제공하기 위해서는 자체 제공자를 개발해야한다.

방송 수신자 : 안드로이드 기기에서 발생하는 다양한 이벤트/정보를 받고 반응하는 컴포너트이다. 이를테면 시스템 부팅, 배터리 부족, 알림 수신과 같은 것을 알려주는 것이 방송이다.

 

안드로이드 액티비티 생명주기

 

출처 : Activity Life cycle of Android

OnCreate() 

Activity가 생성될 때 호출된다. 따라서 OnCreate()는 전체 수명 동안 한 번만 호출된다.

이전 저장된 상태를 포함하는 savedInstanceState 매개 변수를 받는다. 

사용자 인터페이스 초기화에 사용된다. 

다음 수행 메서드는 onStart()

 

OnRestart()

Activity가 멈췄다가 다시 시작되기 바로 전에 호출 (ex. 홈 버튼을 눌렀다가 앱을 다시 열 때)

다음 수행 메서드는 onStart()

 

onStart()

Activity가 사용자에게 보여지기 바로 직전에 호출된다. (ex. Acitivity가 처음 로드될 때, 다른 Acitivity에서 돌아왔을 때)

BroadcastReceivers를 사용하는 경우 여기에서 등록하여야 함.

다음 수행 메서드는 onResume(), onStop()

 

onResume()

Activity가 사용자와 상호작용하기 바로 전에 호출됨

다음 수행 메서드는 onPause()

 

onPause()

다른 Activity가 보여질 때 호출된다.

데이터 저장, Thread 중지 등의 처리를 하기에 적당한 메서드.

다음 수행 메서드는 onResume(), onStop()

 

onStop()

Activity가 더는 사용자에게 보여지지 않을 때 호출

메모리가 부족해서 어플리케이션이 중지할 경우 이 메서드가 호출되지 않을 수 있다.

다음 수행 메서드는 onRestart(), onDestory()

 

onDestory()

Activity가 소멸될 때 호출된다.

finish() 메서드가 호출되거나 시스템이 메모리 확보를 위해 Activity를 제거할 때 호출된다.

 

참고자료

medium.com/@thinuwanwickramaarachchi/android-activity-lifecycle-b8126ed3e985

elfinlas.tistory.com/228

medium.com/@droidbyme/activity-life-cycle-of-android-2e298809df6a

swalloow.tistory.com/18

ko.wikipedia.org/wiki/안드로이드_(운영_체제)

brunch.co.kr/@mystoryg/80

반응형

'IT > Teckweek' 카테고리의 다른 글

최단 경로 문제  (0) 2020.10.12
객체지향 프로그래밍이란?  (0) 2020.10.05
MVC, MVP, MVVM  (0) 2020.08.15
SSO란?  (0) 2020.08.02
SPA란?  (0) 2020.08.02

댓글