반응형
Intent란?
= 컴포넌트 간 통신을 맡는 객체
- 액티비티(Activity): 화면을 구성하는 컴포넌트
- 서비스(Service): 백그라운드 작업을 하는 컴포넌트
- 콘텐츠 프로바이더(Content Provider): 데이터를 공유하는 컴포넌트
- 브로드캐스트 리시버(Broadcast Receiver): 시스템 이벤트가 발생할 때 실행되게 하는 컴포넌트
안드로이드 앱은 위 4개의 컴포넌트로 개발하는데 이때 Intent는 컴포넌트를 실행하기 위해 시스템에 전달하는 메세지라고 볼 수 있다.
즉 컴포넌트를 실행하는 정보가 담긴 인텐트 객체를 시스템에 전달하면 컴포넌트가 실행된다.
Intent의 종류
명시적 인텐트
- 클래스 타입 레퍼런스를 이용하는 것
- 내부 앱의 컴포넌트를 요청하는 인텐트 객체를 만들 때 사용
- 액티비티 간 화면 이동을 구현할 때 흔히 볼 수 있음
val intent = Intent(this, DetailActivity::class.java)
암시적 인텐트
- 인텐트 필터 정보를 활용한 인텐트
- 실행 대상을 시스템이 판단
- 외부 앱의 컴포넌트를 요청할 때 사용
val intent = Intent()
intent.data = Uri.parse("https://backcii.tistory.com")
* 인텐트 필터(Intent Filter)
- 컴포넌트가 수신하고자 하는 Intent의 유형을 정의
- 예시
- 앱A는 갤러리 기능을 제공하고 있고, 앱B에서는 이 기능을 사용하고 싶어할 때
- 앱A에서 갤러리에 대한 인텐트 필터를 선언하고 있어야 시스템은 앱 A가 B에서 요청한 인텐트를 처리 가능하다고 판단함
//앱 A의 AndroidManifest.xml 예시
<activity android:name=".GalleryActivity">
<intent-filter>
<action android:name="android.intent.action.PICK" />
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="image/*" />
</intent-filter>
</activity>
이때 인텐트 필터 하위에 선언엔 태그는 다음과 같은 역할을 한다.
- `<action>` : 컴포넌트의 기능을 나타냄
- `<category>` : 컴포넌트가 포함되는 범주
- DEFAULT: 암시적 인텐트를 위해 필수
- LAUNCHER: 앱 아이콘 클릭시 시작되는 컴포넌트
- BROWSABLE: 브라우저가 실행하는 컴포넌트
- `<data>` : 컴포넌트에 필요한 데이터 정보
- 즉 컴포넌트에서 데이터 형식을 처리하는지 나타냄
//앱B에서 갤러리 호출
val intent = Intent(Intent.ACTION.PICK)
intent.type = "image/*"
startActivity(intent)
액티비티 간 화면 전환 + 데이터
MainActivity -> DetailActivity 로 화면을 전환하며 데이터를 함께 전달하고 싶을 때
putExtra (MainActivity.kt)
//DetailActivity를 실행하라는 정보를 Intent 객체에 대입
val intent = Intent(this, DetailActivity::class.java)
//전달하고자 하는 데이터 추가
intent.putExtra("name", "honggildong")
//인텐트를 시스템에 전달
startActivity(intent)
- `putExtra()` : 엑스트라 데이터를 추가하는 함수
- `public Intent putExtra(String name, CharSequence value)`
- 첫 번째 매개변수 = 데이터 식별자
- 두 번째 매개변수 = 전달할 데이터
getExtra (DetailActivity.kt)
val name = intent.getStringExtra("name")
- 위와 같이 인텐트로 실행된 컴포넌트에서 엑스트라 데이터를 가져올 수 있다.
- `getStringExtra()`, `getIntExtra()`, `getDoubleExtra()` 등으로 타입별 데이터를 가져올 수 있음
반응형
'학습 기록 > 안드로이드' 카테고리의 다른 글
| Recycler View (0) | 2025.03.29 |
|---|---|
| Fragment (0) | 2025.03.24 |
| ViewBinding (0) | 2025.03.23 |