본문 바로가기
안드로이드

[안드로이드] 인텐트 알아보기

by krapoi 2022. 4. 28.
반응형

요즘 혼자 공부한 것들을 귀찮아서 하나, 둘 안 올리다 보니, 결국 지금 상황이 되었다.

뭐, 결국은 내 잘못이라 생각한다.

오늘은 인텐트를 알아보자.

 

인텐트

개념

이 인텐트라는 녀석은 안드로이드를 개발해 봤다면 자세한 건 몰라도 많이 사용하고 있을 것이다.

왜냐하면 개발 중 액티비티를 띄우는 과정에서 인텐트를 만들고 그 인텐트의 파라미터로 액티비티 클래스를 전달하면 창 변환이 되기 때문이다.

 

또한 인텐트 안에 웹페이지 주소나 전화번호 등을 URL 객체로 만들어 넣으면 웹 페이지나 전화 걸기 화면 등이 띄워지는 것도 인텐트 중 하나이다.

 

또 안드로이드에는 4대 컴포넌트가 있는데 이 4대 컴포넌트들끼리 유기적으로 정보전달이 가능하게 해 주는 역할도 한다.

 

이러한 역할들을 수행하여 보다 더 유연한 애플리케이션을 만들게 해주는 친구이다. 

 

기본 구성요소

인텐트의 기본적인 구성요소로는 Action과 Data가 존재한다.

 

여기서 Action은 수행할 기능이며, Data는 Action이 수행될 대상 데이터를 말한다.

 

예로

 

val intent = Intent(Intent.ACTION_VIEW, Uri.parse(url));

 

를 한다면 여기서 Action은 Intent.ACTION_VIEW가 될 것이다. 이 Action이 뜻하는 것은 화면을 띄어달라는 의미이다.

그리고 Data는 Uri.parse(url)이 될 것이며, 이것이 Action이 수행할 Data 즉 웹 주소일 것이다.

 

이제 기본적인 인텐트에 대한 개념을 잡았으니 이 인텐트의 종류를 알아보자.

 

인텐트는 2가지의 종류가 존재하는데, 

첫 번째가 명시적 인텐트,

두 번째가 암시적 인텐트이다.

이 2가지의 인텐트를 각각 설명해 주겠다.

 

명시적 인텐트

명시적 인텐트는 이름에서부터 알 수 있듯이 정확하게 무엇을 해야 하는지 알 수 있는 인텐트이다.

주로 애플리케이션 내부에서 사용된다.

 

예를 들어, 아래와 같은 코드가 있다.

val intent = Intent(this, Subactivity::class.java)
startActivity(intent)

이 코드는 인텐트 data부분에 Subactivity::class.java라는 값을 넣어 Subactivity를 실행시켜 달라는 명확한 의미를 전달한다.

이렇게 한다면 Subactivity로 넘어갈 것이다.

 

 

암시적 인텐트

암시적 인텐트는 직접 누가 뭐를 해라를 알려주지 않고 무엇을 해야 하는지만 알려주고 이 요청을 처리할 수 있는 컴포넌트를 찾아 실행시켜주는 친구이다. 음 말로 하니 이해하기가 어려울 수 있다.

 

이 암시적 인텐트의 대표적인 예가 여러 가지가 있는데 그중 하나가 하이퍼링크로 URL을 눌러서 열 때이다.

 

아마 카카오톡에서 URL을 열 때 

 

항상 이 앱으로 열기를 체크를 안 했다면, 이런 사진과 같은 창을 본 적이 있을 것이다. (웹을 여는 앱이 여러 개라면, 구글만 있으면 자동으로 구글로면 열림, 요즘은 카톡에서 자동으로 열어줘서 모를 듯)

이런 게 가능하게 하는 녀석이 암시적 인텐트이다.

 

그렇다면 이 암시적 인텐트는 왜 사용하는 것일까?

간단하다. 이미 그 기능을 수행할 수 있는 앱들이 있는데 따로 다시 기능을 수행하기 위한 앱을 만들 필요가 없기 때문이다. 즉, 이미 기능을 지원하는 앱들이 있다면 암시적 인텐트를 이용해 그 앱들을 사용하면 되는 것이다.

 

 

이렇게 오늘은 인텐트에 대해 알아봤다. 

다음에는 인텐트 필터에 대해 알아 오겠다.

 

 

 

 

참고

https://limkydev.tistory.com/35

반응형