Tiny Star
본문 바로가기
Dev Log/Android

인텐트(Intent)는 무엇인가? | 명시적 인텐트와 암시적 인텐트

by 별터 2026. 4. 30.

Intent 는 크게 두 가지 상황에서 나오는 개념이다.

1. 안드로이드 코어 프레임워크의 Intent

2. 아키텍처 패턴에서의 Intent

2번에서의 Intent 개념은 '사용자의 액션(의도)' 그 자체를 의미한다.

 

이번 글에서는 1번에서의 Intent 에 관해 이야기한다.

https://developer.android.com/guide/components/intents-filters?hl=ko

 

인텐트 및 인텐트 필터  |  App architecture  |  Android Developers

인텐트는 Android에서 다른 앱 구성요소의 작업을 요청하는 데 사용되는 메시지 객체로, 활동, 서비스, broadcast receiver 간의 통신을 지원합니다. 이 가이드에서는 명시적 인텐트와 암시적 인텐트를

developer.android.com

인텐트 (Intent)

인텐트는 쉽게 말해, 앱에게 무언가를 해달라고 부탁하는 '심부름꾼' 또는 '요청 메시지'이다.

공식 문서에는 `다른 앱 구성요소에 작업을 요청하는 데 사용할 수 있는 메시지 객체`라고 한다.

 

명시적 인텐트와 암시적 인텐트

- 명시적 인텐트 (정확한 대상 지정) | 컴포넌트 이름을 정확히 명시하기에 명시적 인텐트

명시적 인텐트는 '내 앱 안에 있는 B 화면을 띄워줘' 처럼 정확히 어떤 앱의 어떤 컴포넌트를 실행할지 콕 집어서 지시하는 방식이다. 

대상이 명확하기에 주로 내가 만든 앱 내부에서 다른 화면으로 이동하거나 백그라운드 작업을 시작할 때 사용한다.

 

- 암시적 인텐트 (할 일만 지정)

특정 앱을 지정하지 않고 '이 텍스트를 공유해줄 앱이 있나요?'처럼 수행할 일반적인 작업(Action)만 선언하는 방식이다.

그러면 안드로이드 시스템이 기기에 설치된 앱들을 모두 살펴보고, 이 작업을 처리할 수 있는 앱(예: 카카오톡, 이메일, 메시지 등)들을 찾아 사용자에게 선택하도록 대화상자를 띄워준다.

 

-> 인텐트는 화면과 화면, 혹은 앱과 다른 앱 사이를 연결해주고 서로 소통할 수 있게 만들어주는 매개체 역할이다.

 

명시적 인텐트와 암시적 인텐트 차이

1. 대상 지정 방식의 차이

- 명시적 인텐트: 인텐트를 처리할 특정 컴포넌트 이름을 정확하게 지정

- 암시적 인텐트: 특정 컴포넌트 이름을 지정하지 않는 대신, 수행하고 싶은 일반적인 작업만을 선언 (스스로 수신할 컴포넌트를 결정)

 

2. 주로 사용하는 상황의 차이

- 명시적 인텐트: 자신의 앱 내부에서 구성요소를 열 때 사용. 본인 앱 내부이기에 실행할 클래스의 이름을 정확히 알고 있기 때문.

- 암시적 인텐트: 자신의 앱에서 직접 처리할 수 없는 다른 앱의 기능이 필요할 때 사용.

 

3. 안드로이드 시스템의 처리 방식 차이

- 명시적 인텐트: 대상이 명확히 지정되어 있어, 안드로이드 시스템이 지시받은 해당 컴포넌트를 즉시 시작.

- 암시적 인텐트: 안드로이드 시스템은 기기에 설치된 다른 모든 앱들의 매니페스트 파일에 선언된 '인텐트 필터(Intent Filter)를 살펴보고, 요청된 인텐트와 일치하는 앱을 찾음. 만약 조건을 만족하여 처리할 수 있는 앱이 단 하나라면 즉시 앱이 열리고, 여러 앱이 처리할 수 있다면 사용자가 직접 사용할 앱을 고를 수 있도록 선택 대화상자를 띄워줌.