×
Crocus
공부한 내용을 정리하는 블로그로 시작한
Crocus는 2014년 1월 14일 부터 시작하여
현재 월 6만명, 총 1,499,763명의 방문자 수를 기록하고 있습니다.
Donation
이제 많은 사용자들이 이용하는 만큼
더 다양한 서비스 개발/제공을 위해 후원금을 모금하고자 합니다.
후원을 해주시는 분들은 Donators 명단에 성명, 후원금을 기입해드리며
Crocus 블로그가 아닌 다른 곳에 정리해둔 저만의 내용을 공유해 드리고자 합니다.
Account
예금주 : 고관우
신한은행 : 110-334-866541
카카오뱅크 : 3333-01-7888060

👉 후원 페이지 바로가기 Donators
익명 : 5000원(Crocus응원합니다.)
busyhuman: 5000원(유용한 지식 감사합니다.)
익명 : 5000원(알고리즘 학습러)

Intent 

Component를 실행하기 위해 시스템에 넘기는 정보이다.

 

 

즉, 실행하고자 하는 컴포넌트 정보를 담은 Intent구성 -> 시스템 -> Intent 정보를 통해 그에 맞는 Component를 실행하게 된다.

 

안드로이드는 Component기반의 구조이고 이때 Intent에 의해 내부적으로 개발자가 작성한 Activity같은 클래스들이 아래와 같이 동작하게 된다.

 

이때 위의 각각이 Class이지만 각 Class가 상호결합 하지 않는 상태로 실행된다. 그래서 이를 Component라고 한다.

 

즉, 인텐트를 좀 더 자세히 설명해보자면

 

안드로이드 어플리케이션을 구성하는 네 가지 기본 요소에는 Activity, Service, Broadcast Receiver, Content Provider가 있다.

이때 인텐트(Intent)란 이러한 어플리케이션 구성요소(컴포넌트) 간에 작업 수행을 위한 정보를 전달하는 역할을 한다.

우리는 이미 인텐트를 자주 사용하고 있었을지도 모른다. 가장 와닿는 예를 하나 들자면 인텐트를 이용하여 우리는 화면 전환을 매번 해왔을 것이다.

 

즉, 인텐트는 컴포넌트 A가 컴포넌트 B를 호출할 때 필요한 정보를 담고 있으며, 이 정보에는 호출되는 컴포넌트 B의 이름이 명시적으로 표시거나, 속성들이 암시적으로 표시되기도 한다.

 

 

또한 호출된 컴포넌트 B가 호출한 컴포넌트 A로 어떠한 결과를 전달할 때도 인텐트가 사용된다. 

어떠한 컴포넌트를 호출하냐에 따라 사용되는 대표적인 메소드로는 다음과 같은 것들이 있다. 

Methods

startActivity() :: 새로운 액티비티를 화면에 띄울 때

startService(), bindService() :: 서비스와 관련 

broadcastIntent() :: 브로드캐스팅을 수행할 때


인텐트는 명시적 인텐트(Explicit Intent)와 암시적 인텐트(Implicit Intent)로 구분할 수 있는데 

인텐트에 클래스 객체나 컴포넌트 이름을 지정하여 호출될 대상을 확실히 알 수 있는 경우에는 명시적 인텐트, 

호출될 대상의 속성들을 지정했지만 호출될 대상이 달라질 수 있는 경우에는 암시적 인텐트라고 한다.

이때 Intent는 2가지 Intent가 존재한다.

 

 

명시적 인텐트(Explicit Intent)

 

실행하고자하는 Component 클래스명을 Intent에 담는 방법.

주로 동일 App에서 다른 Component를 실행시킬때 사용한다.

 

암시적 인텐트(Implicit Intent)

 

암시적 인텐는 다른 응용 프로그램의 컴포넌트를 호출할 때 사용된다. 

 

운영체제에는 인텐트의 정보를 참조하여 호출할 컴포넌트를 검색하는 정교한 알고리즘이 작성되어 있으며 시스템은 적절한 컴포넌트를 찾기 위해 설치된 모든 응용 프로그램의 컴포넌트를 조사한다. 

 

그래서 매니페스트에 액티비티, 서비스 등의 컴포넌트 정보를 가급적 상세하게 기록해 놓아야 하며 운영체제는 매니페스트의 컴포넌트 목록과 인텐트를 비교하여 적절한 컴포넌트를 찾아 실행한다.