안드로이드 앱 개발을 위한 핵심 컴포넌트

Jae Chan·2023년 6월 14일
5

JAVA

목록 보기
3/4
post-thumbnail

이번 학기 안드로이드 수업을 들으며 기억해야 할 중요한 내용 몇 가지를 정리했습니다.

주요 내용은 다음과 같습니다.


Activity

안드로이드에서 액티비티애플리케이션에 사용자 인터페이스(UI)를 보여주는 요소이다.

액티비티는 사용자가 앱과 상호작용을 할 때 하나의 화면이나 사용자 작업 단위로 표시된다.

예를 들어, 우리가 앱을 사용할 때 로그인 화면이나 날씨 화면, 동영상을 보여주는 화면등을 모두 액티비티로 구현할 수 있다.

각각의 액티비티는 일련의 뷰 및 사용자의 이벤트 처리 로직등을 포함할 수 있다.

Activity의 생명 주기

안드로이드의 액티비티는 특정한 상태 및 생명 주기를 갖고 있다.
액티비티가 실행 할 때 부터 종료 될 때 까지 사용자의 상호작용에 따라 생명 주기 상태를 이동하게 된다.

이 때 액티비티의 상태에 따라 생명 주기 함수가 자동적으로 호출되는데,
액티비티의 대표적인 상태는 총 3가지이다.

  • 활성 상태 : Activity Runnning
  • 비활성 상태 : Stop
  • 일시 정지 상태 : Pause

활성 상태

액티비티가 사용자에게 보여지고 포커스된 상태이다.

액티비티가 현재 사용자와 상호작용이 가능한 상태를 의미한다. 이 상태에서는 액티비티는 최상위에 위치하게 되며 사용자 입력을 받고 UI를 업데이트 한다.

액티비티가 처음 생성될 때, 일시 정지 상태에서 다시 돌아올 때 활성 상태로 진입하게 된다.

호출되는 메소드

  • onCreate()

액티비티가 처음 생성될 때 호출되는 메소드이다.
일반적으로 액티비티에 대한 초기화 작업(Initialize)이 이루어진다.

  • onStart()

액티비티가 사용자에게 보여지기 전에 호출되는 메소드이다.
액티비티의 화면이 보여지고 사용자의 입력을 받을 준비가 된다.

  • onResume()

액티비티가 사용자와 상호작용하기 시작할 때 호출되는 메소드이다.
이 단계에서는 액티비티가 실행 중이며 포커스를 받고 사용자의 입력을 처리한다.

비활성 상태

현재 액티비티가 부분적으로 가려지거나 포커스를 잃은 상태이다.

이 때 액티비티는 여전히 사용자에게 보이지만 다른 액티비티 또는 시스템의 팝업창에 의하여 일부 가려지거나 영향을 받은 상태이다. 비활성 상태에서는 일부 UI의 업데이트를 제한하며 백그라운드 상태에서 자원을 아낄 수 있다.

예를 들면 현재 화면에서 다이얼로그가 나와 해당 다이얼로그에 포커스를 가지면 해당 액티비티는 비활성 상태가 되는 것이다.

호출되는 메소드

  • onPause()

액티비티가 일부 가려지거나 포커스를 잃을 때 호출되는 메소드이다.
다른 액티비티나 시스템 팝업창에 가려질 경우에도 호출될 수 있다.
이 메소드에서는 일부 UI의 업데이트를 제한하거나 자원을 해제하는 작업을 할 수 있다.

일시 정지 상태

액티비티가 더이상 사용자에게 보여지지 않고 완전히 가려진 상태이다.

이 상태에서 액티비티는 다른 액티비티에 의해 완전히 가려지거나 현재 액티비티가 백그라운드로 이동할 때 발생하는 상태이다. 일시 정지 상태에서는 UI 업데이트를 제한하고 필요한 경우에는 자원을 해제하여 시스템 리소스를 아낄 수 있다.

일시 정지된 상태의 액티비티는 재개되거나, 소멸될 수 있다.

호출되는 메소드

  • onStop()

액티비티가 더 이상 사용자에게 보이지 않을 경우 호출되는 메소드이다.

  • onRestart()

onStop() 상태에서 다시 액티비티가 시작되기 전에 호출되는 메소드이다.
일시 정지 상태에서 다시 시작될 때 실행되는 메소드이며 다시 활성 상태가 되기 전에 필요한 초기화 작업을 수행할 때 사용한다.

  • onDestroy()

액티비티가 소멸되기 전에 호출되는 메소드이다.
액티비티가 완전히 종료되기 직전에 리소스 해제 및 사용자 데이터를 저장하는 등의 정리 작업을 수행한다. 이 메소드가 호출된 이후는 액티비티가 메모리 해제가 되며 완전히 종료 된다.


Intent

🧱 Intent는 안드로이드의 컴포넌트 간의 통신을 위해 사용되는 객체이다.

주로 액티비티간의 전환에 사용되며 다른 컴포넌트와의 데이터를 공유하거나 액션을 수행하기 위해 사용된다.

Intent의 종류

인텐트는 다음의 종류로 나뉜다.

  • 명시적 Intent
  • 암시적 Intent

명시적 인텐트는 목적지의 컴포넌트를 직접 지정한다.
이를 통해 특정 컴포넌트와 상호작용 할 수 있다. 예를 들어 특정 액티비티로 전환하거나 서비스를 시작하는데 사용할 수 있다.

암시적 인텐트는 컴포넌트의 식별자 정보가 없어도 작업을 수행할 수 있다.
예를 들어 암시적 인텐트를 사용해 카메라 앱을 실행해 사진을 촬영하거나 웹 브라우저 앱을 실행하여 웹 URL을 열 수 있다.

두 인텐트의 차이점은 인텐트가 가리키는 컴포넌트가 명확한지, 불분명하냐에 따라서 달라진다고 볼 수 있다.


Intent Filter

앱이 수신할 수 있는 인텐트의 유형을 정의하는 기능

인텐트 필터는 안드로이드 프로젝트의 AndroidManifest.xml에 등록되어 있다.
여기서 해당 앱이 어떤 종류의 인텐트를 처리할 수 있는지 시스템에 알려준다.

인텐트 필터는 명시적,암시적 인텐트 모두에 사용할 수 있다.
명시적 인텐트의 경우에는 컴포넌트의 클래스명을 직접 지정해 명확한 대상을 지정할 수 있다.
암시적 인텐트에서는 인텐트 필터에 수신할 수 있는 인텐트 유형을 동적으로 결정할 수 있다.

예를 들어 다른 앱에서 전화를 걸기 위해 전화 앱을 사용하려면 전화 걸기 작업을 처리할 수 있는 인텐트 필터를 등록 해야한다.


Service

해당 앱이 백그라운드에서 실행되는 컴포넌트이다.

서비스는 사용자 인터페이스를 가지지 않고 백그라운드에서 오래 실행되는 작업을 의미한다.
주로 네트워크 요청, 파일의 다운로드, DB 처리등과 같은 작업을 처리하는 데 사용한다.

서비스의 종류는 크게 3가지 유형이다.

  • Foreground Service
  • Background Service
  • Bound Service

Foreground Service사용자에게 눈에 띄는 작업을 수행한다.
사용자의 상태표시줄에 보이는 등의 형태인데, 우리가 흔히 사용하는 뮤직 플레이어가 그 예이다. 음악을 들을 경우 상태표시줄에 현재 재생되고 있는 음악이 나오는데 이 상태에서 다른 앱을 실행해도 음악은 계속 나오는 경우이다.


Broadcast Receiver

안드로이드 시스템에서 발생하는 Broadcast 메시지를 수신하는 컴포넌트

여기서 안드로이드 시스템에서 발생하는 Broadcast 메시지란, 시스템 이벤트 또는 앱 간의 통신이다. 예를 들면 핸드폰의 배터리 부족 경고, 메세지 수신 알람 등이 그 예이다.

안드로이드 앱에서는 Broacast Receiver를 통해 등록된 Broadcast 메시지를 필터링하여 수신해 필요한 작업을 수행할 수 있다.

  • 네트워크 연결 상태를 감지하여, 네트워크 연결 끊김,양호 등을 화면에 보여주는 기능
  • 배터리가 부족할 경우 앱에서 핸드폰 충전 알림 표시 기능

이러한 기능등을 Broadcast Receiver를 통해 구현할 수 있다.


Content Provider

앱 간의 데이터 공유를 위한 인터페이스를 제공하는 컴포넌트

일반적으로 앱은 하나의 프로세스로 실행되며 자신의 프로세스에서 사용하는 데이터는 자신만 접근하도록 되어있다.

하지만 사용자의 사진첩에 있는 사진,동영상 또는 연락처 정보들을 가져와야 할 경우에는 다른 앱에서 정보들을 가져와야하는데 이 때 Content Provider는 앱 간의 데이터 공유를 할 수 있는 기능을 제공해준다.

주로 DB, 로컬 파일 또는 네트워크에 저장된 구조화된 데이터에 대한 CRUD 작업을 제공하고 다른 앱에서 데이터를 읽거나 쓸 수 있도록 안드로이드 시스템에서 제공해주는 기능이다.


0개의 댓글