인텐트는 어떠한 액션이 수행되어야 한다는 요청을 하는 일종의 메시지 전달 메커니즘입니다.
여러 액션을 담긴 인텐트를 요청을 하면 안드로이드 런타임은 인텐트 확인과정을 거쳐 수행을 해 줍니다.

또한 안드로이드 어플리케이션을 실행하게 되면 어플리케인견의 도메인(샌드박스)가 생성이 되어
다른 어플리케이션의 접근을 하지 못하게 하여 실행된 어플이 안전하게 운영될 수 있도록 보호해줍니다.

샌드박스(도메인)은 무엇인가?

기본적으로 서로 다른 도메인에 접근할 수 없습니다.
그러면, 주소록 어플에서 전화걸기어플(Dialing)를 어떻게 호출해 줄 수 있는가? 궁금해 질 겁니다.
이렇게 다른 도메인에 있는 어플에 접근할 수 있는 방법이 있습니다.

바로 인텐트와 브로드캐스트 수신자, 어댑터, 콘텐츠 공급자 같은걸 사용하면 됩니다.
(저도 배워가는 과정이라.. 인텐트 외에는 잘 모릅니다. 나중에 알게되면 올려놓도록 하겠습니다.)

인텐트는 시스템 전역에 메시지를 브로드캐스트할 수 있으며 브로드캐스트 수신자를 등록한 애플리케이션은
특정 인텐트에 반응하게 됩니다. 

그럼 어떠한 액션들이 있나?
1. 액티비티 호출
2. ...
3. ...

# 액티비티 호출
인텐트를 사용하여 액티비티를 호출할 수 있는데 호출이 허락이 되면 일명 "화면전환" 이됩니다.

일단 인텐트의 생성자를 
public Intent(Context pakageContext, Class<?> cls); 
입니다.

이를 풀어보면. 현재 액티비티에서 다른 액티비티를 호출한다는 겁니다.
즉, 현재 액티비티에서 다른 액티비티로 전화시켜 달라고 요청을 하는 겁니다.

예를 들어, aaa 란 액티비티에서  bbb 액티비티를 요청을 하면
Intent intent = new Intent(aaa.this, bbb.class);
setActivity(intent);

라고 할 수 있습니다.

위와같이 직접 액티비티를 호출하는 것은 "명시적 액티비티 호출"이라고 합니다.
명시적 인텐트 호출은 액티비티의 형을 알고 있어야 하기 때문에 같은 어플에서 호출되는 방법일 것 같습니다.

Posted by hgjung

댓글을 달아 주세요