[ Android Studio ] #3. 액티비티와 구성요소에 대해 알아보자

ma.caron_g·2022년 1월 27일
0
post-thumbnail

[ 참고한 출처 ]


[ 안드로이드 App의 구성 ]

안드로이드 앱은

  • 액티비티 (Activity)
  • 서비스 (Service)
  • 브로드캐스트 수신자 (Broadcast Receiver)
  • 내용 제공자 (Content Provider)

4가지로 구성 돼 있습니다.

각 구성요소들은 독립적인 역할을 가지며, Intent(인텐트)를 이용하여 상호작용합니다.

>> [ 액티비티 (Activity) ]

어플리케이션의 기능을 갖는 단일의 독립적인 모듈로, 사용자와의 상호작용을 담당하는 인터페이스입니다.
안드로이드 어플리케이션은 반드시 하나 이상의 액티비티를 포함하며, 액티비티는 생명주기(Life Cycle) 관련 메서드들을 이용하여 원하는 기능들을 구현할 수 있습니다.

  • Intent(인텐트)를 통해 다른 어플리케이션의 액티비티 호출이 가능합니다.
  • 2개 이상의 액티비티를 동시에 Display 할 수 없습니다.
  • 1개 이상의 뷰, 또는 뷰 그룹을 포함합니다.
  • 액티비티 내에 Fragment(프래그먼트)를 추가하여 화면을 분할시킬 수 있습니다.

[ 특징 ]

  • 안드로이드 Activity 클래스의 서브 클래스로 생성되어야함.
  • 다른 액티비티와는 완전 독립적으로 구현(다른 액티비티의 메서드를 직접 호출 불가).
  • 인텐트(Intent) 와 콘텐트 제공자(Content Provider) 를 이용하여 액티비티 공유 가능.

>> [ 서비스 (Service) ]

서비스는 사용자와 직접적인 상호작용을 하는 요소는 아닙니다.
백그라운드에서 어떠한 작업을 처리하기 위해 사용합니다
서비스는 메인 스레드에서 동작하기 때문에 서비스 내에서 별도의 스레드를 생성하여 작업을 처리해야 합니다.

  • 네트워크(Network)와 연동이 가능합니다.
  • 별도의 UI를 가지지 않으며 백그라운드에서 수행됩니다.
  • 액티비티와 서비스는 UI스레드라고 불리는 동일한 애플리케이션 스레드로 실행됩니다.
  • 애플리케이션이 종료되어도 이미 시작이 된 서비스(Service)는 백그라운드(Background)에서 계속 동작합니다.

>> [ 방송 수신자 (Broadcast Receiver) ]

안드로이드 OS로 부터 발생하는 각종 이벤트와 정보를 받아와 핸들링하는 컴포넌트입니다.

사용자 안드로이드 디바이스의 시스템 부팅시 앱 초기화, 네트워크 끊김 등 특수한 이벤트에 대한 처리나 배터리 부족 알림, 문자 수신과 같은 정보를 받아 처리를 해야 할 필요가 있을 때 동작합니다.
즉, 안드로이드 OS에서 메신저앱 또는 문자 메시지가 오면 모든 앱에 "메시지가 왔다"라는 하나의 정보를 방송(BroadCast)을 합니다.
이 메시지를 받기 위해 브로드캐스트 리시버를 구현하면 되며 해당 정보가 오면 특정 이벤트를 처리할 수가 있습니다.

  • 대부분 UI를 가지지 않습니다.
  • 안드로이드 디바이스의 특수한 상황에 대응하기 위해 사용됩니다.
  • 특정한 상황을 제외하고는 브로드캐스트는 시스템에서 시작합니다.

>> [ 콘텐츠 제공자 (Content Provider) ]

데이터를 관리하고 다른 어플리케이션의 데이터를 제공하는데 사용되는 컴포넌트입니다.
특정한 애플리케이션이 사용하고 있는 데이터베이스(DB)를 공유하기 위해 사용하며 애플리케이션 간의 데이터 공유를 위해 표준화된 인터페이스를 제공합니다.

  • SQLite DB / Web / 파일 입출력 등을 통해서 데이터를 관리합니다.
  • 외부 애플리케이션이 현재 실행 중인 애플리케이션 내에 있는 데이터베이스(DB)에 함부로 접근하지 못하게 할 수 있으면서 나 자신이 공개하고 공유하고 싶은 데이터만 공유할 수 있도록 도와줍니다.
  • 작은 데이터들은 인텐트(Intent)로 애플리케이션끼리 데이터를 서로 공유가 가능하지만 콘텐츠 프로바이더는 음악 또는 사진 파일 등과 같이 용량이 큰 데이터들을 공유하는데 적합합니다.
  • 프로바이더는 데이터의 Read(읽기), Write(쓰기)에 대한 퍼미션이 있어야 애플리케이션에 접근이 가능합니다.
  • 데이터베이스에서 흔히 사용되는 CURD(Create, Read, Update, Delete) 원칙을 준수합니다.

>> [ 인텐트 (Intent) ]

어플리케이션의 컴포넌트간에 작업 수행을 위해 정보를 전단하는 역할로 통신 수단이라고 생각하면 됩니다.

인텐트를 가장 많이 사용하는 경우는 액티비티간의 화면 전환(이동)이 있습니다.

인텐트는 컴포넌트 A가 컴포넌트 B를 호출할 때 필요한 정보를 가지고 있으며, 이 정보에는 호출 대상이 되는 컴포넌트 B의 이름이 명시적으로 표시가 됨과 동시에 속성(Attribute)들이 암시적으로 표시되기도 합니다.
그리고 호출된 컴포넌트 B가 호출한 컴포넌트 A로 어떠한 결과를 전달할 때도 인텐트가 사용이 됩니다.

profile
다른 사람이 만든 것을 소비하는 활동보다, 내가 생산적인 활동을 하는 시간이 더 많도록 생활화 하자.

0개의 댓글