애플리케이션의 4대 컴포넌트

  1. 기본 컴포넌트(Component)

안드로이드 플랫폼은 어플리케이션을 실행시킬 수 있는 네 가지 유형의 Component를 제공한다.

이러한 구성요소들은 안드로이드 어플리케이션 내에서 독자적으로 작업을 실행할 수 있는 진입점으로 이용된다.

하나의 안드로이드 어플리케이션 내에 존재하는 다양한 Component들은 다른 안드로이드 어플리케이션에서도 쉽게 호출되어 원하는 작업을 수행할 수 있다.

-> 어떤 모바일 플랫폼보다 유연하고 재사용성이 높은 어플리케이션을 만들 수 있다.

안드로이드 어플리케이션은 작업을 실행하기 위해 iPhone 어플리케이션 같이 소스코드 상에 main() 메소드를 명시적으로 선언해서 개발할 필요가 없다.

네 가지 Component들 중에 필요한 역할에 따라 적합한 Component들을 구현하기만 하면 적절한 진입점을 찾아 컴포넌트를 실행한다.

컴프

**추가적으로 안드로이드 3.0(API Level 11)부터는 프래그먼트가 추가되었습니다. 프래그먼트는 안드로이드 뷰도 아니고 4대 구성 요소로 보기에도 어렵습니다, 하지만 안드로이드 3.0이후부터는 안드로이드 애플리케이션의 핵심 컴포넌트로 봐도 무방할 정도로 매우 활용도 높습니다.

액티비티

액티비티는 UI 화면을 담당하는 컴포넌트입니다.



안드로이드 애플리케이션은 반드시 하나의 액티비티를 가지고 있어야 합니다.



각 액티비티는 매니페스트파일에 등록 되어 있어야 합니다.



액티비티는 하나 이상의 view를 가질 수 있다.

서비스

서비스는 백그라운드에서 실행되는 컴포넌트로 오랫동안 실행되는 작업이나 원격 프로세스를 위한 작업을 할 때 사용됩니다.



UI를 가지고 있지 않습니다.



한번 시작된 서비스는 애플리케이션이 종료되고 다른 애플리케이션으로 이동해도 계속 백그라운드에서 실행된다.



모든 서비스는 Service 클래스를 상속받아서 작성됩니다.



네트워크를 통하여 데이터를 받아올 수도 있습니다.

방송수신자(Broadcast Receiver)

방송수신자는 안드로이드 단말기에서 발생하는 다양한 이벤트 정보(화면이 켜지거나 꺼짐, 리부팅 등)를 받고 반응하는 컴포넌트입니다.



일반적으로 UI를 가지고 있지 않습니다.



단말기에서 발생하는 일 중에서 애플리케이션이 알아야 하는 상황이 발생하면 방송을 해줍니다.



수신기(Broadcast Reciver)를 통해 상황을 감지하고 적절한 작업을 수행합니다.

컨텐트 제공자(Content Provider)

컨텐트 제공자는 데이터를 관리하고 다른 애플리케이션 데이터를 제공하는 컴포넌트입니다.



데이터는 파일 시스템이나 SQLite 데이터베이스, 웹상에 저장될 수 있습니다.



컨텐트 제공자를 통해서 다른 애플리케이션의 데이터를 쿼리하거나 변경가능합니다.
  1. 인텐트 (Intent)

-> 메시지에는 호출 대상 Component의 이름이 직접적으로 명시되어 있을 수도 있고, 혹은 처리해줬으면 하는 작업과 데이터 등이 들어가 있을 수도 있다.

-> 호출된 Activity가 자신을 호출한 Activity에게 결과 값을 전달할 때도 Intent 객체에 데이터를 담아 전달한다.

(1) 명시적 Intent

startActivity(new Intent(MainActivity.this, MyActivity.class));

MainActivity.this : 현재 Activity의 컨텍스트 객체, MyActivity.class : 새로 시작할 Activity 클래스명

(2) 암시적 Intent

호출할 Component 직접적으로 지정하지 않고, 처리해야 하는 작업과 데이터, 유형 등 각종 정보를 Intent 객체에 정의하여 이를 처리할 수 있는 Component를 안드로이드 플랫폼에게 찾아달라고 요청하는 방식

-> 어떤 기능을 처리해달라는 정보만을 통해 Component를 호출

Component들은 자신이 처리할 수 있는 Intent가 무엇인지 안드로이드 manifest 파일에 를 통해 정의할 수 있으며 이를 통해 암시적 Intent 를 수신할 수 있다.

만약 어떤 Component가 어떤 Intent Filter 도 정의하고 있지 않다면, 그것은 명시적 Intent만을 통해서 시작될 수 있다.

외부에 있는 다양한 Component들을 호출하여 사용하려고 할 때 유용

안드로이드 플랫폼에 내장되어 있는 핵심 어플리케이션들(이메일 클라이언트, SMS 문자메시지 및 전화걸기 프로그램 등)도 암시적 Intent를 통해서 호출되므로 사용자는 핵심 어플리케이션들을 사용자가 원하는 다른 Component들로 대체할 수 있음

(PC에서 동영상 파일을 재생할 때 Windows Media Player가 기본으로 설정되어 있지만, 이를 곰플레이어로 바꿔 쓸 수 있는 것과 동일한 방식)

Intent intent = new Intent(Intent.ACTION_DIAL, Uri.parse(“tel:01012345678”));

startActivity(intent);

Intent.ACTION_DIAL : 처리해야 할 작업, Uri.parse(“tel:01012345678”) : 처리해야 할 데이터

이를 통해 전화걸기 어플리케이션 시작.

출처:https://hyeonstorage.tistory.com/142

https://juyoung-1008.tistory.com/34