Kong돌이의 코딩이야기

Android Studio 인텐트의 기본구성요소 알아보기 (명시적,암시적 인텐트) 정리 본문

코딩이야기/안드로이드

Android Studio 인텐트의 기본구성요소 알아보기 (명시적,암시적 인텐트) 정리

Kong돌이 2021. 8. 26. 17:11
728x90

우선 인텐트의 기본 구성요소는 '액션(Action)'과 '데이터(Data)'입니다.

'액션(Action)'은 수행할 기능이고 '데이터(Data)'는 액션이 수행될 대상의 데이터를 의미합니다.

댸표적인 액션으로는 ACTION_VIEW, ACTION_EDIT 등이 있습니다.

인텐트 객체를 만들 때에는 ACTION_VIEW와 함께 웹페이지 주소를 전달하면 단말 안에 설치되어 있던 웹브라우저의 화면이 뜨면서 해당 웹페이지를 보여줍니다.

 

 

"명시적 인텐트(Explicit Intent)"

인텐트에 클래스 객체나 컴포넌트 이름을 지정하여 호출할 대상을 확실히 알 수 있는 경우 주로 애플리케이션 내부에서 사용한다. 명시적 인텐트를 사용하는 이유로는 특정 컴포넌트나 액티비티가 명확하게 실행되어야 할 경우이다.

 

"암시적 인텐트(Implicti Intent)"

액션과 데이터를 지정하긴 했지만 호출할 대상이 달라질수 있는 경우 

암시적 인텐트는 액션과 데이터로 구성되지만 그 외에도 여러 가지 속성을 가지고 있다.

대표적인 것으로 '범주(Category)', '타입(Type)', '컴포넌트(Component)', '부가 데이터(Extra Data)'를 들수 있다

 

범주(Category)
액션이 실행되는 데 필요한 추가적인 정보를 제공한다. 예를 들어, CATEGORY_LAUNCHER는 최상위 앱으로 설치된 앱들의목록을 보여주는 애플리케이션 런처(Launcher) 화면에 이 앱을 보여주어야 한다는 것을 의미한다.

타입(Type)
인텐트에 들어가는 데이터의 MIME타입을 명시적으로 지정한다. 보통 MITE 타입은 데이터만으로도 구별이 가능하지만 명시적으로 지정할 필요가 있는 경우도 있다.

컴포넌트(Component)
인텐트에 사용될 컴포넌트 클래스 이름을 명시적으로 지정한다. 보통 이 정보는 인텐트의 다른 정보를 통해 결정된다.
이 속성이 지정될 경우에는 지정된 컴포넌트가 실행되도록 한다. 새로운 액티비티를 정의하고 그 액티비티의 클래스 객체를 인텐트에 전달하여 실행하는 방법도 컴포넌트를 지정하는 방식과 같다.

부가 데이터(Extra Data)
인텐트는 추가적인 정보를 넣을 수 있도록 번들(Bundle) 객체를 담고 있다. 이 객체를 통해 인텐트 안에 더 많은 정보를 넣어 다른 앱 구성요소에 전달 할 수 있다. 예를 들어, 이메일을 보내는 액션이 있다면 이메일에 제목,내용 등을 부가 데이터로 넣어 전달해야 이메일 앱이 그 데이터를 받아 처리 할 수 있다.

 

 

컴포넌트(Component)

액티비티와 같은 독립적인 구성 요소

 

MIME타입

일반적으로 웹 서버에서 사용하는 MIME타입과 같다 예를 들어 "http://로 시작하는 문자 열의 경우에는 웹페이지 주소를 나타내는 URL이라고 인식하는 것과 같다. 결국 인텐트 전달 메커니즘도 이렇게 MIME타입을 구분한 후 설치된 앱들 중에 적절한 것을 찾아 액티비티를 띄워준다.

728x90
반응형
LIST
Comments