컨텐츠 프로바이더는 컨텐츠 리볼저의 요청 대상이 될 때 활성화가 됩니다.
그것을 제외한 3가지의 컴포넌트 ( 액티비티, 서비스, 브로드캐스트 리시버 ) 는
인텐트 ( Intent ) 라는 비동기 메시지에 의해 활성화가 되죠.
인텐트는 컨텐츠 메시지를 가지고 있는 인텐트 객체입니다.
인텐트는 액티비티와 서비스에게 요청되는 액션을 가리키고,
그 액션은 처리해야하는 데이터의 URI 를 명시합니다.
( 브로드캐스트 리시버에게는 공지되는 액션을 가리킵니다. )
예를들어, 카메라 버튼이 눌러졌다 라는 이벤트가 발생하면 그것에 귀 기울이고 있던 관계자(party) 에게 공지하는 구조이죠.
각각의 컴포넌트에 대해 활성화 할 수 있는 별도의 메소드가 있습니다.
액티비티 활성화
액티비티는 인텐트 객체를
의 파라미터로 전달함으로써 실행됩니다.
이것을 받는 액티비티는
메소드를 호출함으로써 실행하게 한 인텐트를 얻을 수 있습니다.
그런 후, 다른 인텐트를 전달하기 위해서는 그 액티비티의
메소드를 호출하면 됩니다.
하나의 액티비티는 다음번 액티비티를 실행하는 것이 대부분인데요,
이럴때 자신이 시작시킨 액티비티로부터 결과를 리턴받고자 한다면
startActivity() 대신에 startActivityForResult() 를 호출해야만 됩니다.
예를들어, 어떤 액티비티가 사용자에게 사진을 선택하게 하는 액티비티를 시작하고, 사용자가 선택한 사진을 리턴받아 처리하고 싶다면 그 결과는 액티비티의 onActivityResult() 메소드가 호출되는곳에 전달되는 인텐트 객체 내에서 리턴됩니다.
서비스 활성화
서비스는 Context.startService() 에 인텐트 객체를 파라미터로 전달함으로써 활성화가 됩니다.
그 뒤, 서비스의 onStart() 메소드를 호출하고 인텐트 객체를 전달합니다.
또한, 호출하는 컴포넌트와 대상이 되는 서비스간의 지속적인 연결을 위하여
Context.bindService() 메소드에 파라미터로 전달할 수 있습니다.
그렇게되면 해당 서비스는 onBind() 가 호출되는 곳에서 인텐트 객체를 받지요.
예를들어, 음악 재생 플레이어 같은 경우 서비스 컴포넌트를 써야하기 때문에,
액티비티는 음악재생 서비스와의 연결을 설정하기 위하여 bindService() 를 호출해야 됩니다.
브로드캐스트 리시버 활성화
브로드캐스트에는
Context.sendBroadcast() ,
Context.sendOrderedBroadcast(),
Conext.sendStickyBroadcast()
와 같이 다양한 메소드에 인텐트 객체를 전달하여 브로드캐스트를 만들 수가 있습니다.
그 뒤, 이것에 등록된 모든 브로드캐스트 리시버에게 onReceive() 를 호출하여 인텐트를 전달하죠!
활성화의 내용은 여기가 끝입니다 ^^;;
다음 포스팅엔 컴포넌트 종료하기를.................................
출처 : http://underclub.tistory.com/270
'프로그래밍 > 안드로이드' 카테고리의 다른 글
[안드로이드] 컴포넌트 생명주기 - #1 액티비티 생명주기 (0) | 2010.12.03 |
---|---|
[안드로이드] 태스크 (Task) 시작하기 (0) | 2010.12.03 |
[안드로이드] 런치 ( Launch ) 모드 (0) | 2010.12.03 |
[안드로이드] 액티비티와 태스크 (0) | 2010.12.03 |
안드로이드 컴포넌트 #4 - 컨텐츠 프로바이더 (0) | 2010.12.03 |
컴포넌트 #3 - 브로드캐스트 리시버 (0) | 2010.12.03 |
컴포넌트 #2 - 서비스 (0) | 2010.12.03 |
안드로이드 컴포넌트 #1 - 액티비티 (0) | 2010.12.03 |
안드로이드 애드몹 달기 (1) | 2010.11.16 |