관리 메뉴

나만을 위한 블로그

[Android] 인텐트란? 본문

Android

[Android] 인텐트란?

참깨빵위에참깨빵 2021. 10. 7. 19:05
728x90
반응형

안드로이드 디벨로퍼에서 인텐트에 대해 말하는 내용은 아래와 같다.

 

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

 

인텐트 및 인텐트 필터  |  Android 개발자  |  Android Developers

An Intent is a messaging object you can use to request an action from another app component . Although intents facilitate communication between components in several ways, there are three fundamental use cases: An Activity represents a single screen in…

developer.android.com

인텐트는 메시징 객체로 다른 앱 구성 요소로부터 작업을 요청하는 데 사용할 수 있다. 기본 사용례는 크게 3개로 나눌 수 있다.

1. 액티비티 시작 : 액티비티의 새 인스턴스를 시작하려면 인텐트를 startActivity()로 전달하면 된다. 인텐트는 시작할 액티비티를 설명하고 모든 필수 데이터를 담는다.

2. 서비스 시작 : 서비스를 시작해 1회성 작업(파일 다운로드 등)을 수행하게 하려면 인텐트를 startService()에 전달하면 된다. 인텐트는 시작할 서비스를 설명하고 모든 필수 데이터를 담고 있다. 서비스가 클라이언트-서버 인터페이스로 디자인된 경우 다른 구성요소로부터 서비스에 바인딩하려면 인텐트를 bindService()에 전달하면 된다.

3. 브로드캐스트 전달 : 브로드캐스트는 모든 앱이 수신할 수 있는 메시지다. 시스템은 시스템이 부팅될 때 또는 기기가 충전을 시작할 때 등 시스템 이벤트에 대한 다양한 브로드캐스트를 전달한다. 인텐트를 sendBroadcast() 또는 sendOrderedBroadcast()에 전달하면 다른 앱에 브로드캐스트를 전달할 수 있다.

< 인텐트 유형 >

1. 명시적 인텐트 : 인텐트를 충족하는 앱이 뭔지 지정한다. 이를 위해 대상 앱의 패키지명 또는 구성 요소 클래스 이름을 제공한다. 일반적으로 앱 안에서 컴포넌트를 시작할 때 쓴다. 시작하려는 액티비티 또는 서비스의 클래스명을 알고 있기 때문이다

2. 암시적 인텐트 : 특정 컴포넌트의 이름을 대지 않지만, 대신 수행할 일반적인 작업을 선언해 다른 앱의 컴포넌트가 이를 처리할 수 있도록 해준다. 사용자에게 지도의 한 위치를 표시하고자 하는 경우 암시적 인텐트를 써서 해당 기능을 갖춘 다른 앱이 지정된 위치를 지도에 표시하도록 요청할 수 있다.

 

즉, 인텐트는 어떤 메시지를 담고 있는 하나의 객체다. 이 메시지는 어떤 액티비티로 이동할지, 어떤 서비스를 시작할지 등 목적지 정보를 갖고 있거나 옮겨야 하는 데이터를 갖고 있을 수도 있겠다.

 

인텐트의 유형은 디벨로퍼에서 말하는 대로 2가지가 있다.

명시적 인텐트는 아예 대상 이름을 콕 찝어서 그 대상에게 어떤 작업을 하라고 명령할 때 사용하는 것이다. 때문에 자바 코드에서 액티비티, 프래그먼트, 서비스 등 컴포넌트를 실행할 때 사용한다.

암시적 인텐트는 대상 이름을 콕 찝어 말하진 않지만, 비슷한 기능을 수행하는 앱들을 불러모아서 사용자한테 이 중에 선택해서 쓰라고 할 때 사용하는 인텐트다.

대표적인 예시가 PDF를 열거나 파일 공유 시, 음악/영상 재생 시, 카메라 앱을 실행시키는 버튼을 눌렀을 때 하단에서 올라오는 앱들의 목록을 담은 Bottom Sheet다. 설치된 관련 앱들이 있어도 사용자의 핸드폰에 그 앱이 깔려있지 않을 수 있으니, 일단 같은 기능 하는 앱들을 전부 불러다가 모아서 보여주는 것이다. 사용자는 그 중에서 원하는 앱을 실행하면 된다.

Bottom Sheet가 암시적 인텐트가 아니라, Bottom Sheet에 유저가 원하는 기능을 수행하는 앱들을 담아서 보여주도록 하는 요소가 암시적 인텐트라는 것이다.

 

또한 암시적 인텐트를 써서 사용자가 앱을 선택하게 하는 순간에 엉뚱한 앱이 나오지 않게 처리해야 할 것이다. 사진 기능을 원하는데 게임 앱이 올라온다면 이건 뭐지 싶을 거다.

이 때 인텐트를 가려서 앱들을 실행시키기 위해 인텐트 필터를 사용한다.

반응형
Comments