2012년 5월 7일 월요일

Intents and Intent Filters 01


액티비티, 서비스, 브로드캐스트 리시버등의 컴퍼넌트들은 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 타입
  • 각각의 액션들은 각각 타입의 데이터명세와 쌍을 이룬다.
  • Action fieldData field
    ACTION_EDIT편집을 위해 표시할 다큐멘트의 URI
    ACTION_CALL전화번호를 나타내는 tel:URI
    ACTION_VIEW다운로드 또는 표현될 http:URI
  • 인텐트와 그것을 다룰 수 있는 컴퍼넌트를 매칭할 때 해당 URI와 데이터 타입을 아는 것이 중요하다.
  • 많은 경우, 데이터 타입은 URI로부터 추론될 수 있다. 예를 들어 content: URI는 데이터가 장치내 위치하며 Content Provider에 의해 관리된다는 것을 의미한다.
  • 타입은 인텐트 개체에 대해 명시적으로 지정될 수 있다.
    setData()URI 데이터를 지정
    setType()MIME 타입을 지정
    setDataAndType()
    getData()
    getType()
Category
  • 인텐트를 처리해야 할 컴퍼넌트의 종류에 대한 추가적인 정보를 담은 문자열
  • Category Constants
  • ConstantMeaning
    CATEGORY_BROWSABLE 이미지와 이메일 표시위한 브라우저
    CATEGORY_GADGET 해당 액티비티가 다른 액티비티에 임베디드될 수 있다.
    CATEGORY_HOME 액티비티가 홈스크린을 출력한다
    CATEGORY_LAUNCHER 태스크의 초기 액티비티가 될 수 있으며 최상위 어플 런처에 배치된다.
    CATEGORY_PREFERENCE 타겟 액티비티가 Preference Panel이다.
  • Method
  • addCategory()
    removeCategory()
    getCategories
Extras
  • 인텐트를 처리할 컴퍼넌트에 전달되어야 할 추가적 정보의 Key-value pair
  • ActionExtra설명
    ACTION_TIMEZONE_CHANGEDtime-zone
    ACTION_HEADSET_PLUGstate, name
    SHOW_COLOR
Flags

댓글 없음:

댓글 쓰기