개발하면서 Intent에 대해서 많이 보게 되는데, 예제를 통해서 사용만 해 봤지 뭔지 모르고 사용한 경우가 많다.
아직 Intent에 대한 고민을 할 필요가 없거나, 다른 기본 컴포넌트들을 모른다면 몰라도 된다.
Intent를 한마디로 정의하자면,
다른 앱 Component로 부터 통신을 주고받을 수 있는 Message 객체이다.
'와이파이 연결 시 제개됩니다.'
'카카오톡으로 넘기기'
'배터리가 부족합니다'
등등의 기능이나 메시지를 어플리케이션을 사용하면서 본 적이 있을 것이다.
어플리케이션 외부에서 일어나는 일이 나는 일이나 외부로 보내고 싶은 데이터를 어떻게 넘기는가? 하면 이 역할을 하는 게 Intent이다. (어플 내부에서 일어나는 것도 물론 인텐트로 ㅇㅇ)
Intent를 사용하는 방법에 대해서는 Activity Service Broadcast등에서 다뤄봐야겠다. 우선은 이 Intent가 무엇인지 이해하고 넘어가자.
1. 명시적(Explicit), 암시적(Implicit) 인텐트
2. Intent에 들어가는 내용
1. 인텐트의 종류(Explicite, Implicite)
Intent는 명시적(Explicit), 암시적(Implicit) 두 가지로 나눌 수 있다.
1) 명시적 인텐트
메시지를 전달하는 대상을 명확히 지정하여 실행하는 것이다.
StartActivty에 ㅁㅁㅁ::class.java 를 통해 새로운 액티비티를 켜는 경험이 있을 것임..
2) 암시적 인텐트
메세지를 전달하는 대상을 설정하지 않고, 해당 메세지를 받을 수 있는 어플리케이션에게 메세지를 보낸다.
해당 메세지는 Android System에 의해서 Intent를 받을 수 있는 컴포넌트를 찾아서 전달한다(Menifest에 설정된 내용을 통해서 검색).
2. Intent에 들어가는 내용
Intent에는 그럼 어떤 내용을 담고 있는가?
1) Component Name
시작할 구성요소의 이름을 Intent에 지정할 경우 명시적 인텐트가 되고, 지정하지 않으면 Intent의 다른 내용들을 통하여 시작할 구성요소를 찾게 되고, 암시적 인텐트가 된다.
2) Action
String형태로 수행할 동작을 지정한다.
(Intent)
위의 Intent문서를 확인하면 다양한 Action들이 지정되어있는 것을 확인할 수 있다.
Action들도 브로드캐스트 액션인지, 엑티비티 액션인지 구분되어 있는 것을 확인할 수 있다.
(Action을 새로 지정하여 사용할 수도 있는데, Intent나 다른 Framework에 있는 Name을 사용하기를 추천한다.)
MediaStore이나 Setting 등의 다른 Class의 문서에서도 Constants에 정의된 Action들이 있는 것을 확인할 수 있다.
3) Data
작업을 수행할 데이터 또는 데이터를 MIME유형의 URI객체임.
4) Category
Intent를 처리할 구성요소의 종류에 대한 추가적인 정보를 담고 있다.
위의 4가지 내용들(Name, Action, Data, Category)은 Intent의 목표를 특정하는데 도움을 주는 정보들이다. 이러한 정보들 외의 다른 다이터를 가지고 있을 수 있다.
5) Extras
Key-Value형태의 데이터 또는 Bundle을 통해서 지정해 줄 수 있다.
6) Flag
Intent의 메타데이터 역할을 한다.
Flag에 대한 정보는 Intent문서에서 setFlag()를 통해 확인하면 이해하기 쉽다.
다음으로는 Pending Intent에 대해서 알아보자.
https://doojuns-ordinary.tistory.com/57
2)Android pendingIntent에 대해서
medium.com/androiddevelopers/all-about-pendingintents-748c8eb8619 All About PendingIntents PendingIntents are an important part of the Android framework, but most of the available developer resource..
doojuns-ordinary.tistory.com
그 후 위의 내용을 토대로 예제를 만들어 보자
'안드로이드 읽어보기 > 2.Intent' 카테고리의 다른 글
3) Intent와 데이터 공유 (0) | 2022.04.26 |
---|---|
2)Android pendingIntent에 대해서 (0) | 2022.04.24 |