본문 바로가기
안드로이드/기초

[Android] Intent란?

by 보우마스터 2024. 5. 6.

 

정의 : 인텐트는 컴포넌트간에 작업 수행을 위한 정보를 전달하는 역할

 

용도

  • 액티비티간 화면 전환
  • 호출된 컴포넌트 B가 호출한 컴포넌트 A로 어떤 결과를 전달할 때도 사용

사용메소드

  • startActivity() : 새로운 액티비티 화면을 띄울 때 사용
  • startService(), bindService(), 서비스와 관련된 메소드
  • broadcastIntent() : 브로드캐스팅을 수행할 때

Action, Data로 구성 Action은 수행할 기능, 데이터는 액션이 수행될 대상 데이터를 의미 Intet의 종류?

  1. 명시적 인텐트 명시적 인텐트는 인텐트에 클래스 객체나 컴포넌트 이름을 지정하여 호출할 대상을 확실히 알 수 있는 경우에 사용(특정 컴포넌트나 액티비티가 명확하게 실행되어야할 경우에 사용)
  2. 암시적 인텐드 액션과 데이터를 지정하긴 했지만, 호출할 대상이 달라질 수 있는 경우에 사용합니다. ex) 인터넷 작업시 브라우저를 선택하는것 처럼

기본구성

  • 액션(Action) : 수행할 기능
  • 데이터(Data) : 액션이 수행될 대상 데이터
var intent = Intent(Intent.ACTION_DIAL, Uri.parse(data))

 

액션 : ACTION_DIAL 이며 전화 다이얼을 걸라는 액션

데이터 : URL로 파싱한 것 액션이 수핼할 data 즉 : 전화번호

 

Intent 는 택배를 전달하는 택배기사, 택배차  

Bundle 은 택배가 된다

인텐트 동작 순서

  • Componenet가 ActivityManager에게 다른 컴포넌트의 실행을 요청
  • ActivityManager는 패키지 정보를 가지고 있는 PacakageManager에게 컴포넌트 정보 요청
  • 유요한 컴포넌트임을 확인하면 컴포넌트를 실행
  • 여기서 실행을 요청할 때 컴포넌트의 정보가 Intent 입니다.
  • Intent는 IPC 통신을 위한 직렬화 객체로 Parcelable을 통해 직렬화 되어 있습니다.
  • 즉, 이 객체는 다른 프로세스로 전달하기 위한 데이터 입니다.
  • 활성화 될 컴포넌트 정보 + 활성화 될 컴포넌트에게 전달할 데이터
  • activity의 경우 startActivity()
  • service의 경우 startService()
  • Broadcast Recevier의 경우 sendBroadcast()

인텐트의 종류

  • 명시적 인텐트
  • 암시적 인텐트