[Android] Intent?

산군·2024년 6월 24일

Android

목록 보기
1/2

What?

안드로이드 개발을 하며, 우리는 Intent라는 친구를 자주 접하게 된다.

새로운 Activity를 시작하거나, Activity간 데이터를 전달할 때 자주 사용하곤 했다.

Intent란 도대체 무엇인가?


Intent

‘의도’란 뜻을 가진 Intent는 무엇을 하고자 하는 생각 혹은 계획을 일컫는다.

안드로이드 세계에서 각 Component끼리 Intent(의도)

Intent[명사] : 의도 (=intention)

뜻 그대로 ‘의도’이다. 의도란 무엇을 하고자 하는 생각이나 계획을 일컫는다.

안드로이드 세상에서 각 컴포넌트(진입점)끼리 의도를 전달할 땐, Intent 라는 친구를 이용하게 된다.

Intent는 액션과 데이터로 구성되어있다.

우리는 Intent에 무엇을 담고 어떻게 할지를 정의하고, 이 Intent친구를 하나의 매개변수로써, 하나의 열쇠로써 이곳저곳에 전달하게 된다.


Intent

  • 액션(Action) + 데이터(Data)

Intent의 특징

  • android.content 패키지 안에 정의되어있다.
  • 앱 구성 요소 간에 작업 수행을 위한 정보를 전달하는 역할을 한다.

Intent 객체는 액션과 데이터를 인수로하여 만들수도 있지만,

다른 Intent나 클래스 객체를 인수로 하여 만들기도 한다.

	fun Intent() {
        throw RuntimeException("Stub!")
    }

    fun Intent(o: Intent?) {
        throw RuntimeException("Stub!")
    }

    fun Intent(action: String?) {
        throw RuntimeException("Stub!")
    }

    fun Intent(action: String?, uri: Uri?) {
        throw RuntimeException("Stub!")
    }

    fun Intent(packageContext: Context?, cls: Class<*>?) {
        throw RuntimeException("Stub!")
    }

    fun Intent(action: String?, uri: Uri?, packageContext: Context?, cls: Class<*>?) {
        throw RuntimeException("Stub!")
    }

명시적 인텐트

인텐트에 호출할 대상을 확실히 알 수 있는 경우에는 ‘명시적 인텐트(Explicit Intent)’라고 한다.

우리가 클래스 객체나, 컴포넌트 이름을 지정할 때가 명시적 인텐트이다.


암시적 인텐트

액션과 데이터를 지정하긴 했지만 호출할 대상이 달라질 수 있는 경우를 ‘암시적 인텐트(Implicit Intent)’라고 한다. 이 경우, MIME 타입에 따라, 설치된 앱 정보를 알고 있는 ‘시스템’이 이 인텐트를 이용해, 요청한 정보를 처리할 수 있는 적절한 컴포넌트를 알아서 찾아보고 사용자에게 제공하는 과정을 거친다.

여기서 컴포넌트란 액티비티와 같은 독립적인 구성 요소이다.

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

  • 범주(Category)
  • 타입(Type)
  • 컴포넌트(Component)
  • 부가 데이터(Extra Data)
profile
안드로이드 산군의 공식문서

0개의 댓글