액티비티, 서비스, 브로드캐스트 리시버등의 컴퍼넌트들은 Intents로 불리는 메세지에 의해 활성화된다.
인텐트 메세지 장치는 동일한 앱의 컴포넌트들 또는 다른 앱의 컴포넌트들과 late runtime binding를 가능케 한다.
인텐트는 연산되어야 할 추상적인 명세를 지닌 데이터 구조이다.
예를 들어 브로드캐스트는 이미 발생되거나 알려져야 할 무엇인가를 나타낸다.
컴포넌트 유형별 인턴트 전달 메카니즘
- 인텐트를 인수로 전달되어 액티비티로 하여금 다음과 같은 역활의 메서드를 수행한다.
- 다음과 같은 서비스 관련 메서드는 인텐트를 인수로 가지고 각각의 기능을 한다.
- 브로드캐스트 메서드에 전달된 인텐트 개체들은 관심이 있는 모든 브로드캐스트 리시버들에게 전달된다.
| Context.startActivity() | 새로운 액티비티를 시작한다. |
| Activity.startActivityForResult() | 기존의 액티비티로 하여금 무언가를 지령한다. |
| Activity.setResult() | startActvityForResult()를 호출한 액티비티에 정보를 전달한다. |
Intent Object
컴퍼넌트가 수행해야 할 Action과 관련 데이터를 지니는 또는 안드로이드 시스템이 알아야 하는 해당 인텐트를 처리할 컴퍼넌트 카테고리와 타겟 액티비티를 실행하는 명령을 기술한 것을 포함하는 한 단위의 정보이다.인텐트 구성
Component Name
인텐트를 처리할 컴퍼넌트의 이름이며 그 이름 형식은 컴퍼넌트 클래스 이름과 패키지 이름을 결합한 형태이다.클래스 이름은 생략 가능하며 그 경우에 안드로이드는 인텐트의 다른 정보를 활용하여 타겟을 찾는다.
컴퍼넌트 이름은 setComponent(), setClass(), setClassName()으로 지정되고 getComponentName()로 접근된다.
-Action
수행되어야 액션을 가리키는 문자열
| Context.startService() | 서비스를 초기화 또는 새로운 명령을 전달한다. |
| Context.bindService() | 호출 컴퍼넌트와 타겟 서비스간 연결을 성립시킨다. |
| Constant | Target Component | Action |
|---|---|---|
| ACTION_CALL | activity | 전화를 초기화 |
| ACTION_EDIT | activity | 편집할 데이타를 표시 |
| ACTION_MAIN | activity | 데이터입력과 출력없이 태스크의 초기 액티비티로써 시작 |
| ACTION_SYNC | activity | 서버의 데이터를 모바일 장치와 동기화 |
| ACTION_BATTERY_LOW | broadcast receiver | 배터리 잔량이 낮다는 경고 |
| ACTION_HEADSET_PLUG | broadcast receiver | 헤드셋이 장치에 연결 또는 분리됨을 표시 |
| ACTION_SCREEN_ON | broadcast receiver | 스크린이 켜졌음을 표시 |
| ACTION_TIMEZONE_CHANGED | broadcast receiver | 타임존 설정이 변경되었음을 표시 |
인텐트 개체의 액션은 setAction()에 의해 지정되고 getAction() 의해 접근한다.
Data
- 작용될 데이터의 URI와 데이터의 MIME 타입
- 각각의 액션들은 각각 타입의 데이터명세와 쌍을 이룬다.
- 인텐트와 그것을 다룰 수 있는 컴퍼넌트를 매칭할 때 해당 URI와 데이터 타입을
아는 것이 중요하다.
- 많은 경우, 데이터 타입은 URI로부터 추론될 수 있다. 예를 들어 content: URI는 데이터가 장치내 위치하며 Content Provider에 의해 관리된다는 것을 의미한다.
-
타입은 인텐트 개체에 대해 명시적으로 지정될 수 있다.
setData() URI 데이터를 지정 setType() MIME 타입을 지정 setDataAndType() getData() getType()
| Action field | Data field |
|---|---|
| ACTION_EDIT | 편집을 위해 표시할 다큐멘트의 URI |
| ACTION_CALL | 전화번호를 나타내는 tel:URI |
| ACTION_VIEW | 다운로드 또는 표현될 http:URI |
Category
- 인텐트를 처리해야 할 컴퍼넌트의 종류에 대한 추가적인 정보를 담은 문자열
- Category Constants
- Method
| Constant | Meaning |
|---|---|
| CATEGORY_BROWSABLE | 이미지와 이메일 표시위한 브라우저 |
| CATEGORY_GADGET | 해당 액티비티가 다른 액티비티에 임베디드될 수 있다. |
| CATEGORY_HOME | 액티비티가 홈스크린을 출력한다 |
| CATEGORY_LAUNCHER | 태스크의 초기 액티비티가 될 수 있으며 최상위 어플 런처에 배치된다. |
| CATEGORY_PREFERENCE | 타겟 액티비티가 Preference Panel이다. |
| addCategory() |
| removeCategory() |
| getCategories |
Extras
- 인텐트를 처리할 컴퍼넌트에 전달되어야 할 추가적 정보의 Key-value pair
| Action | Extra | 설명 |
|---|---|---|
| ACTION_TIMEZONE_CHANGED | time-zone | |
| ACTION_HEADSET_PLUG | state, name | |
| SHOW_COLOR |
댓글 없음:
댓글 쓰기