티스토리 뷰
Intent
: 액티비티에서 다른 액티비티를 실행하거나, 실행한 액티비티에 데이터를 전달하는 등의 작업을 하기 위해서 사용된다.
뿐만 아니라 Application Component간의 상호작용을 할 때도 intent에 정보를 담아서 보낸다.
=> 메시지 객체
Intent객체의 구성요소
1) ComponentName : 인텐트를 처리할 컴포넌트의 이름
Ex. Org.tacademy.app/org.tacademy.app.MyActivity1
2) Action : 수행할 액션의 이름을 나타내는 문자열. (브로드 캐스트 인텐트의 경우에는 수행된 액션 )
Ex. ACTION_VIEW , ACTION_CALL, ACTION_TIMEZONE_CHANGED,…
3) Data : 액션이 수행될 데이터의 Uri와 MIME타입 ( uri와 mime type이 있으면 데이터를 얻어와서 출력할 수 있다.)
Ex. Tel:/010-2940-2884, http://maps.google.com, …
4) Category : 인텐트를 처리할 컴포넌트의 종류를 알려주는 추가 정보
ex. CATEGORY_BROWSABLE, CATEGORY_LAUNCHER, …
5) Extra and Flag : 인텐트를 처리할 컴포넌트에게 전달되는 키-밸류(key-value paris)값. (다양한 플래그들이 있을 수 있다.)
Ex. sendIntent.putExtra(Intent.EXTRA_TEXT, ”This is my text to send”);
*flag 플래그 : ~ 이렇게 실행되면 좋겠어
*URI(Uniform Resource Identifier): 프로그램에서 접근할 수 있는 자원에 부여한 아이디 . (위치)
*MIME (Multipurpose Intent Mail Extenstions ) Type : Text가 아닌 데이터나 ASCII가 아닌 문자를 나타내기 위한 방식.
Mime-type은 데이터를 어떻게 play할지 결정하기 위해 사용된다.(일종의 데이터 형식)
Ex. Audio/mp3. , video/avi , application/json
Intent의 종류
1) 명시적 인텐트 Explicit Intent
호출할 Component나 class(클래스 객체) 가 무엇인지 명확하게 알 수 있는 경우에 요청하는 방식으로 주로 한 어플리케이션 내에서
이미 알고 있는 내부 Component를 호출할 때 많이 사용한다.
- 특정 컴포넌트나 클래스를 지정하기 때문에 명시적이라 한다
- Context , Class 명시!
Intent(Context packageContext, Class<?> .class)
Intent intent = new Intent(MainActivity.this, NewActivity.class)
클래스 자체를 전달해야 하기 때문에 클래스 이름에 .class를 붙였다.
2) 묵시적 Intent
주로 외부에 있는 컴포넌트들을 호출하여 사용하고자 할 때 주로 사용한다.( 액션과 데이터를 지정하긴 했지만 호출할 대상이 달라질 수 있는 경우). Intent filter에 어떤 작업을 할지 명시한다
=> ACTION 사용
intent(String action [,Uri uri]
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(“http://www.google.com”));
New Intent ( intexnt.ACTION_DIAL , Uri.parse(“tel:01029402884”))
// Intent.ACTION_DIAL : 처리해야 할 작업
// Uri.parse(“tel:01029402884”) : 처리해야 할 데이터
IntentFilter
: Activity, Service , Reciver가 처리할 수 있는 기능을 기술하기 위해 사용하는 class로
action, category, data를 설정할 수 있고, data는 uri와 type을 설정할 수 있다.
-인텐트 필터는 독립적으로 실행되는 Component가 자신의 특성을 기술하기 위해 사용하는 class다.
- IntentFilter에는 Application Component가 자신이 처리할 수 있는 Action, Category, Data 를 설정할 수 있도록 되어 있고 ,Application Component의 Priority를 지정할 수 있다.
'Android' 카테고리의 다른 글
inflation (0) | 2021.09.03 |
---|---|
View 클래스 계층 (0) | 2021.09.03 |
Context (0) | 2021.09.02 |
Task (0) | 2021.09.02 |
Activity 간의 데이터 교환 (0) | 2021.09.02 |